是不能直接在异步调用返回数据,一种替代的方案是向异步调用的函数里传入回调函数,当异步任务完成后,使用回调函数处理结果。
Swift 3示例:
class func getData(completionHandler: @escaping (data: NSArray) -> ()) {
...
let task = session.dataTask(with:url) {
data, response, error in
...
resultsArray = results
completionHandler(data: resultsArray)
}
...
task.resume()
}
使用:
override func viewDidLoad() {
User.getData {
data in
println("View Controller: \(data)")
}
}