我有一个可以从网站下载文件的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
,这将使得很难看出已完成的任务和第一个任务之间的区别。
有没有更好的方法来跟踪这些事情?有没有办法为任务分配新的委托?
答案 0 :(得分:0)
也许有这些伊娃:
NSMutableArray *completedDownloads;
NSMutableDictionary *activeDownloadTasks; // @(taskID) => DownloadItem
完成后,从DownloadItem
点击activeDownloadTasks
并将其添加到completedDownloads
。
否则你所做的一切听起来很好。
虽然我很喜欢,但这种语法可能会有所帮助(使用您的示例):
return self.tasksDictionary[@(task.taskIdentifier)];