我正在同时从服务器下载一些信息,并且我正在使用 NSOperationQueue。我有一个问题。例如,如果下载操作由于某种原因失败,我不想从队列中删除该操作。
现在,即使它一旦从服务器得到响应就失败了,操作也会从队列中删除。
有没有办法告诉队列一个特定的操作在逻辑上没有完成,它应该把它留在队列中?
就我而言,我正在下载一组信息。例如,获取一个县的所有地方,然后获取每个县的所有房屋。因此,在某些情况下,如果用户未使用有效令牌登录,则无法下载县。在这种情况下,服务器返回失败消息。我想将这些项目保留在队列中,以便在用户登录应用程序时重试。
示例代码
self.downloadQueue.maxConcurrentOperationCount = 1;
for(Campaign *campaign in campaigns)
{
isContentUpdated = false;
if(self.operation)
self.operation = Nil;
self.operation = [[DownloadOutlets alloc] initWithCampaign:campaign];
[self.downloadQueue addOperation:operation];
}
其中 downloadQueue 是一个 NSOperationQueue 并且 DownloadOutlets 扩展了 NSOperation。谢谢