基本上,我有一个异步网络功能:
func networking(callback:NSDictionary -> Void) {
//stuff happens here
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
if let error = error {
print("ERROR: \(error)")
return
}
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
//print(json)
callback(json as! NSDictionary)
if let dataDict = json["data"] as? [String:AnyObject],
let rememberToken = dataDict["remember_token"] as? String {
self.rememberToken = rememberToken
//print("SUCCESS: \(rememberToken)")
// display success label & make button to get schedules available
}
} catch {
print(error)
}
}
task.resume()
}
我所能做的就是打印(json)数据我要回来了。我真的只想要记住令牌,我将它存储在一个属性中。我遇到的问题是,如果我调用属性,自主线程首先执行后我什么也得不到。如何将属性存储在那里后从属性中访问记忆令牌?
或者我可以将它存放在其他地方吗?
最好的办法是什么?
答案 0 :(得分:0)
有两种方法可以解决这个问题:
使用委托和协议
使用块
最好是块。
这两个教程都有大量的教程和SO答案,所以不会在这里提供实现。