objective-c – 如何在RestKit中过早取消请求并调用“didFailWithError”

我在Objective-C项目中使用RestKit,需要为大约10秒钟的服务指定超时时间.

阅读后,它看起来不像RestKit支持这样,所以我的计划是:

>发送请求时启动计时器
>加载数据时,禁用定时器

这是我的问题

如果定时器方法触发,我需要取消请求并手动调用以下方法.我不是100%肯定如何实现这一点.

my other question中有一些上下文,显示了RestKit在我的项目中的实现以及在这种情况下正在做什么.

非常感谢您提供任何帮助,您可以给我这个.

- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error { 
     NSLog(@"Hit error: %@",error); 
}

解决方法

您可以使用cancelRequestsWithDelegate:selector来实现所描述的工作流程.
- (void)cancelAfterTimeout {
    [[[[RKObjectManager sharedManager] client] requestQueue] cancelRequestsWithDelegate:self];
    NSError *myError = [[[NSError alloc] initWithDomain:NSPOSIXErrorDomain
            code:12345 userInfo:nil] autorelease];
    //feel free to customize the error code,domain and add userInfo when needed.
    [self handleRestKitError:myError];
}

但是,调用该代理错误处理程序可能很棘手,但您可以通过创建新的单独的错误处理程序来解决此问题:

- (void)handleRestKitError:(NSError*)error {
    //do something with the error
}

修改您的didFailWithError:方法的正文:

- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error { 
     [self handleRestKitError:error] 
}

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...