gpt4 book ai didi

ios - 根据另一个的结果创建一个 URLSession

转载 作者:行者123 更新时间:2023-11-28 05:57:00 29 4
gpt4 key购买 nike

我有一个从 viewDidLoad 触发的 URLSession。它返回包含图像 URL 的 JSON。因此,为了获得该图像,我从第一个 URLSession 的完成 block 调用的 JSON 解码器的完成 block 中触发了另一个 URLSession。这是相关代码:

 //THIS IS CALLED FROM viewDidLoad()

let task = urlSession.dataTask(with: url!) { (data, response, error) in
guard error == nil else {
print ("Error while fetching collections: \(String(describing: error))")
return
}

if let data = data, let string = String(data: data, encoding: .utf8) {
print (string)
URL_Request_Handler.parsingJSON(fromData: data, completion: {(result) in
if let result = result {
print ("JSON IS CONVERTED")
print (result)

//This method creates another session and fires it

self.getFinalCollectionFromResult(result)
}
})
}
}

task.resume()

这里是 getFinalCollectionFromResult 方法:

  private func getFinalCollectionFromResult(_ result: Result_Collection) {
let task = URLSession.shared.dataTask(with: URL(string:result.cover_photo.url)!, completionHandler: { (data, response, error) in
if error != nil {
print("Errror")
}
if let data = data, let image = UIImage(data: data) {

DispatchQueue.main.async {
self.collection = Collection(title: result.title, image: image)
self.collectionViewLayout.collectionView?.reloadData()
}
}
})
task.resume()
}

可以从第一个 session 的完成 block 创建另一个 session 吗?

最佳答案

是的,非常好。

但有一个建议:您应该为图像使用 downloadTask 而不是 dataTask。 Apple 表示 dataTask 适用于少量数据,而不是像从图像中获取的大量数据,如果您想在以后添加该功能,downloadTask 可以让您暂停/恢复下载。

关于ios - 根据另一个的结果创建一个 URLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51197651/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com