我正在实例化URLSessionDataTask下载数百个缩略图并将它们填充到数组中的 a。数组中的每个条目都用于填充UITableView实例中的一个单元格。它完全按预期工作。
但是,我想让用户有机会单击一个单元格并启动第二个实例,URLSessionDataTask以便下载与该缩略图关联的其他详细信息。而且我不希望用户等到第一个数据任务完成。
这就是问题所在。在第一个实例完成之前,第二个URLSessionDataTask实例不会检索我需要的数据。我想我不明白这一点,因为我的理解是第一个任务是异步后台任务。URLSessionDataTask
所以我尝试了一种解决方法,当用户单击单元格以获取详细信息时,我将暂停第一个任务,下载详细信息,然后恢复第一个任务。
我想做大致这样的事情:
var firstTask = callThumbnailServer(queryString: createHTTPQueryString())
func userAsksForDetails() {
firstTask.suspend()
var secondTask = callDetailServer(queryString: createHTTPQueryString())
firstTask.resume()
}
但firstTask.suspend()似乎没有效果。现在,firstTask.cancel() 确实成功取消了第一个任务,但我不想取消,我想暂停/恢复。
所以我想我有两个问题:
- 为什么在第一个数据任务完成之前,第二个数据任务似乎没有运行?
- 为什么 cancel() 有效,但 suspend() 无效?
抱歉,如果这些都是愚蠢的问题,我只是从 UIKit 和 Swift 开始。