У меня есть часть кода, в которой опционально инициализируется, а затем присваивается значение в функции, но nill
при распаковке?Быстрые переменные значения и функции
var datastring: String?
Alamofire.request(.POST, "https://example.url/request", parameters: parameters) .response { request, response, data, error in
datastring = NSString(data: data!, encoding:NSUTF8StringEncoding) as! String // there is data in here
// textView.text = datastring! datastring is not nill when here
}
textView.text = datastring! // datastring is nill when here
Это не Амалофир. Я столкнулся с этой проблемой при использовании собственных методов Swift. Что я делаю неправильно, и почему это работает?
PS. Я все еще учусь :)
EDIT: Спасибо всем, кто мне помог. Чтобы прояснить проблему, речь шла о передаче значения переменной из асинхронного потока в основной поток. Я просто не знал, как это сказать.
Datastring устанавливается внутри обратного вызова (асинхронно). Тем временем основной поток продолжает работать, поэтому ваша переменная не имеет в нем ничего, когда установлен textView.text. Вам нужно передать свое значение обратно в основной поток в другой обратный вызов. – ohiodoug
Возможный дубликат [Alamofire request coming nil] (http://stackoverflow.com/questions/35372850/alamofire-request-coming-up-nil) – jtbandes
@ohiodoug Спасибо, что объяснили это. Это то, чего я не понял. –