使用Restkit,我想重试失败的请求。我试图通过委托方法执行此操作,如下所示:
-(void)request:(RKRequest *)request didFailLoadWithError:(NSError *)error{
NSLog(error.domain);
NSLog([NSString stringWithFormat:@"%d",error.code]);
NSLog(error.localizedDescription);
NSLog(error.localizedFailureReason);
[request cancel];
[request reset];
[request send];
}
但是,我收到以下错误:
2013-01-14 11:19:29.423 Mobile_ACPL[7893:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to add the same request multiple times'
我怎样才能实现这一目标?
答案 0 :(得分:2)
错误消息表示您尝试(重新)发送的request
仍在某些内部队列中。可能,让系统有更多时间来处理cancel
和reset
可以使事情有效。
试试这个:
-(void)request:(RKRequest *)request didFailLoadWithError:(NSError *)error{
[request cancel];
[request reset];
dispatch_async(dispatch_get_current_queue(), ^() {
[request send];
}
}
希望它有所帮助。如果这不起作用,那么可能延迟一点(重新)发送可能会有所帮助。这相当于(延迟1.0秒):
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 1.0),
dispatch_get_current_queue(), ^() {
[request send];
});
或完全发出copy
请求并发送。