组织多个NSURLSessionTasks

时间:2014-01-14 23:52:32

标签: ios objective-c nsurlsession

我有一个可以从网站下载文件的iOS应用程序。我在课程NSURLSession中创建了Downloads来管理它们。 Downloads类有一个NSMutableArray,可以使用DownloadItem个对象跟踪所有当前和过去的下载。我对这种设置不满意。

目前,我必须将Downloads类作为所有下载的代理。我认为无法将每个NSURLSessionDownloadTask的委托分配给DownloadItem对象。因此,我必须将其分配给我的Downloads对象,然后确定将DownloadItem转发到的方式。

目前,我通过在tasksDictionary中创建名为Downloads的NSMutableDictionary并使用taskIdentifier作为密钥来实现此目的。

return [self.tasksDictionary objectForKey:[NSNumber numberWithInteger:task.taskIdentifier]];

这似乎有效,但它似乎不是最有效的方法。我还担心我看到第一个创建的taskIdentifier是0,这将使得很难看出已完成的任务和第一个任务之间的区别。

有没有更好的方法来跟踪这些事情?有没有办法为任务分配新的委托?

1 个答案:

答案 0 :(得分:0)

也许有这些伊娃:

NSMutableArray *completedDownloads;
NSMutableDictionary *activeDownloadTasks; // @(taskID) => DownloadItem

完成后,从DownloadItem点击activeDownloadTasks并将其添加到completedDownloads

否则你所做的一切听起来很好。

虽然我很喜欢,但这种语法可能会有所帮助(使用您的示例):

return self.tasksDictionary[@(task.taskIdentifier)];