Restkit:重试失败的请求
Posted
技术标签:
【中文标题】Restkit:重试失败的请求【英文标题】:Restkit: Retry failed request 【发布时间】:2013-01-14 16:23:36 【问题描述】:使用 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'
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:错误消息暗示您尝试(重新)发送的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
并发送。
【讨论】:
请注意,自 ios 6.0 起,dispatch_get_current_queue()
已被弃用以上是关于Restkit:重试失败的请求的主要内容,如果未能解决你的问题,请参考以下文章
Restkit:-[RKObjectMappingProvider mappingForPatternMatchingString:context:] 中的断言失败
RestKit + CoreData:操作成功时替换实体内容,失败时保持原样
无法使用 RestKit 处理成功的 204 响应并正确映射失败的响应
xCode 4.3 使用 RestKit 归档项目失败:#import <RestKit/RestKit.h> Not found
RestKit 对象映射 POST 响应,“CoreData:错误:在 NSManagedObject 类映射操作上调用指定初始化程序失败”