这是关于objc.io video about networking。
的问题注意:我见过类似的问题,但没有一个建议有效 对我来说。
在示例代码中,主要调用是:
Webservice().load(resource: Episode.all) { result in
print(result!)
}
并且load
函数如下所示:
func load<A>(resource: Resource<A>, completion: @escaping (A?) -> ()) {
URLSession.shared.dataTask(with: resource.url as URL) { data, _, _ in
guard let data = data else {
completion(nil)
return
}
completion(resource.parse(data as NSData))
}.resume()
}
为简单起见,他们只打印result
(一个字典数组),但我不明白如何进一步使用它,因为它在闭包内。这样我就可以在UITableView
或类似的东西中显示数组。
所以我想做的是:
var episodes = [Episode]()
Webservice().load(resource: Episode) { result in
episodes = result!
}
print(episodes)
但这导致打印出一个空数组。
我也尝试过使用
DispatchQueue.main.async {
episodes = result!
}
但同样,没有任何印刷品。
我怎样才能做到这一点?