1

使用 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'

我怎样才能做到这一点?

4

1 回答 1

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完全提出请求并发送。

于 2013-01-14T17:40:02.333 回答