Segue отправляет нулевое значение, прежде чем я смогу его вычислить?

Я установил var message:String="" как global variable, в функции я вычисляю ее значение, которое я должен отправить другому ViewController через prepareForSegue, однако это в конечном итоге отправка nil значение, есть идеи, как я могу отправить последнее значение через segue? Спасибо глобальной переменной:var message2="bob"

подготовиться к следующему методу:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "submitSegue") {
        let svc = segue.destinationViewController as! Otpscreen;
        svc.otpname = username.text!
        svc.otppass = password.text!
        svc.otp=message2
    }
}

другой метод, где я вычисляю значение:

func findMatch()->Void
{
print(username.text!+password.text!)
let authenticate=username.text!+password.text!
//line where i calculated hash
print(hash)
let num=strtoul(hash,nil,16)
print(num)
let finalhash=String(num)
let soap = SOAPEngine()

soap.responseHeader = true;
soap.setValue(username.text!, forKey: "userName")
soap.setValue(password.text!, forKey: "password")
soap.setValue(finalhash, forKey: "hashKey")
let dict:Dictionary = try! soap.syncRequestURL("someUrl", soapAction: "send method ") as Dictionary
NSLog("%@", dict);
let returnmessage=(dict["Body"]!["sendOTPResponse"]!!["sendOTPReturn"]!!["string"]!![1])
print(returnmessage)
message2=returnmessage as! String


}

1 ответ

В коде нет ничего плохого, но дело в блоке завершения, после завершения ответа SOAPEngine метод segue должен вызываться после ответа. Так что используйте следующий код

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(<#delayInSeconds#> * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    <#code to be executed after a specified delay#>

// вызываем вашу программу программно});

Другие вопросы по тегам