在Swift中调用网络后提取数据

时间:2016-10-21 12:48:51

标签: ios swift3 nsurlsession

这是关于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!
}

但同样,没有任何印刷品。

我怎样才能做到这一点?

0 个答案:

没有答案