我正在尝试下载一些图像并在Stack Overflow上找到了解决方案
它使用了一些我不理解的闭包语法。
func getDataFromUrl(url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
URLSession.shared.dataTask(with: url) { data, response, error in
completion(data, response, error)
}.resume()
}
它创建了一个函数,并且允许转义完成参数,对吗?然后这个函数返回一个 URLSession?return 语句在哪里?
“数据、响应、错误”声明是什么意思?
然后它调用一个名为 completion(...) 的函数,它在哪里定义和实现?
我想这是一些我不知道的语法。关于在哪里阅读有关此内容的任何提示?
然后我调用了这个函数:
getDataFromUrl(url: url){ data, response, error in
guard let data = data, error == nil else {return}
DispatchQueue.main.async {
let image = UIImage(data: data)
print(image!)
self.m_images?.append(image!)
print(self.m_images!.count)
}
}
self.m_images 是一个数组:[Any],在我的 viewController 顶部声明如下:
var m_images:[Any]?=nil
打开包装时出现错误,它仍然为零:为什么?我只是附加了一张图片。该图像确实存在,我打印它并且它工作正常。