Итак, я пытаюсь получить простую строку данных из RESTful API. Вот как выглядит ответ:
Hello
Он не отформатирован в XML или JSON или чем-то еще, а представляет собой простую строку, потому что за раз передается только одно слово. Итак, вот как выглядит мой свифт:
let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
if error != nil {
println("error: \(error.localizedDescription): \(error.userInfo)")
}
var withNewLine:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
let str:NSString = withNewLine.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
dispatch_async(dispatch_get_main_queue(), {
self.spellCorrection = str
})
})
task.resume()
Я получаю правильные данные обратно в переменную str, прежде чем перейти к методу dispatch_async(). Но когда я захожу в метод dispatch_async(), переменная str становится равной нулю, и я не знаю, почему. Я просто пытаюсь сохранить одно слово в переменной в своем классе, поэтому, если я делаю это совершенно неправильно, дайте мне знать. Я был бы очень признателен за любую помощь, которую я могу получить. Спасибо!
Редактировать
Хорошо, поэтому я должен был включить это в первый раз, когда я опубликовал. Я также пробовал это:
let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
if error != nil {
println("error: \(error.localizedDescription): \(error.userInfo)")
}
var withNewLine:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
self.spellCorrection = withNewLine.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
})
task.resume()
Но когда я делаю это, строка не остается в переменной self.spellCorrection после завершения завершенияHandler. Итак, мой вопрос: что мне делать, чтобы сохранить строку в переменной self.spellCorrection после завершения завершения? Спасибо!
Подробнее
В представленииDidLoad:
var spellCorrection: NSString = ""
//First print
println(self.spellCorrection)
В методе, который я вызываю позже, у меня есть:
func spellCheck() {
var check: String = "http://theURL.com/?text=" + condenseWhitespace(self.lastTypedWord)
let url = NSURL(string: check)
let task = session.dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
if error != nil {
println("error: \(error.localizedDescription): \(error.userInfo)")
}
var withNewLine:NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
self.spellCorrection = withNewLine.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
}).resume()
//Print after the completionHandler
println(self.spellCorrection)
}