我正在对GroupOperation
进行子类化,如果失败且尝试次数小于5,我想再次运行它。我还有一个delayOperation
将它延迟3秒。然而,我无法使用它,这是我到目前为止所做的:
self.conversation
是一个对象。
produceConversationOperation()
返回backgroundOperation
override func operationDidFinish(operation: NSOperation, withErrors errors: [NSError]) {
if let _ = errors.first {
if let _ = operation as? BackgroundOperation {
context.performBlockAndWait({ () -> Void in
self.conversation.retryCountValue++
if self.conversation.retryCountValue < 5 {
let postConversationOperation = self.produceConversationOperation()
let delayOperation = DelayOperation(interval: 3)
postConversationOperation.addDependency(delayOperation)
self.produceOperation(delayOperation)
self.produceOperation(postConversationOperation)
}
else {
self.conversation.retryCountValue = 0
}
self.saveContext()
})
}
}
}
由于某种原因,在第一次失败后,操作不再运行。我觉得问题出在self.produceOperation
方法上,但我不知道是什么。
对于类似的问题有一些解决方案,但我找不到任何有帮助的方法。
由于
答案 0 :(得分:2)
要回答这个问题有点迟了,但您可能希望使用http://github.com/danthorpe/Operations中的RetryOperation
来查看,其中包含许多问题:
GeneratorType
操作为了更具体地回答这个问题,并且不确定produceOperation()
正在做什么,我会冒险猜测它实际上并没有创建一个新的实例,但在某种程度上是返回原来的操作。