0

我正在实例化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() 确实成功取消了第一个任务,但我不想取消,我想暂停/恢复。

所以我想我有两个问题:

  1. 为什么在第一个数据任务完成之前,第二个数据任务似乎没有运行?
  2. 为什么 cancel() 有效,但 suspend() 无效?

抱歉,如果这些都是愚蠢的问题,我只是从 UIKit 和 Swift 开始。

4

0 回答 0