【发布时间】:2013-10-04 15:16:14
【问题描述】:
我正在同时从服务器下载一些信息,并且我正在使用 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。 谢谢
【问题讨论】:
-
您的操作设置如何?显示一些代码示例。
-
什么意思?如果一个操作已经执行了所有代码(无论是成功还是失败),为什么还要在队列中保留一个操作?
-
就我而言,我正在下载一组信息。例如,获取一个县的所有地方,然后获取每个县的所有房屋。因此,在某些情况下,如果用户未使用有效令牌登录,则无法下载县。在这种情况下,服务器返回失败消息。我想保留这些项目在队列中。
-
你可能不想让他们在队列中;将失败的那些移到“pendingToken”队列(数组)并在令牌故障得到解决后重新入队。
标签: ios objective-c nsoperation nsoperationqueue