在 Restkit 中使用块(如 ASIHttpRequest 块)
Posted
技术标签:
【中文标题】在 Restkit 中使用块(如 ASIHttpRequest 块)【英文标题】:Using blocks in Restkit (like ASIHttpRequest Blocks) 【发布时间】:2011-06-11 00:53:30 【问题描述】:我一直在 ASIHttpRequest 中广泛使用块支持,我发现它是一种非常优雅的异步请求编码方式,比让委托回调一个单独的函数要好得多
这里是快速参考的示例代码。
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^
NSString *responseString = [request responseString];
];
[request startAsynchronous];
我想开始使用 Restkit,但我还需要能够将 Restkit 与块一起使用。
我在 Restkit Block Wrapper 看到了包装器,但想检查一下该包装器在生产中是否能正常工作,以及是否有人以前广泛使用过它
【问题讨论】:
明,ASIHTTPREQUEST 是一个非常先进和高度开发的库。真的,这太令人震惊了——没有别的词了。公平地说,到目前为止,它是 ios 世界中任何类型的最可靠第三方库。我想,对您的问题的简短回答是“不,没有什么比这更可靠了。”希望对您有所帮助! 【参考方案1】:我还没有使用 RestKit Block 包装器,但我很快就会使用。我实际上是从我的应用程序中删除 ASIHTTPRequest 并替换为 RestKit。不是因为它不好,ASIHTTP* 相当稳定 - 但它并没有发展。虽然许多其他库(如 RestKit)封装了 NSURLConnection 并因此获得了 Apple 对其持续增强的好处,但 ASIHTTP* 使用 CFNetwork。 Apple 并没有投入大量精力来改进现有的核心基础课程(如 CFNetwork)。此外,由于 ASIHTTP* 依赖于 CF,当它可用时迁移到 ARC 将是一个皇室痛苦;我不希望尽快享受 ARC 的好处。
【讨论】:
我实际上只是在我所有的 objectmapper 之上构建了一个额外的包装器类,而且效果很好。这是希望restkit在达到v1时能够支持块! 创建 ASIHTTPRequest 的 Ben 实际上刚刚在他的博客上宣布他将正式停止 ASIHTTPRequest 的开发,原因也如上所述:allseeing-i.com/[request_release];【参考方案2】:对 RKRequest 和 RKObjectLoader 上所有基本委托任务的块支持将在 0.9.4 中推出
【讨论】:
【参考方案3】:昨天,Blake 发布了verson 0.9.3,其中包含用于对象映射器的块(其他方法已经准备好用于块)。您应该看看新功能。
【讨论】:
【参考方案4】:为了快速使用带有块的 RestKit 的代码示例,我从 http://kalapun.com/blog/2012/05/17/how-i-restkit/ 派生了这个 sn-p
[[RKClient sharedClient] get:@"/fooBar" usingBlock:^(RKRequest *request)
request.onDidLoadResponse = ^(RKResponse *response)
NSLog(@"Retrieved XML: %@", [response bodyAsString]);
;
];
【讨论】:
以上是关于在 Restkit 中使用块(如 ASIHttpRequest 块)的主要内容,如果未能解决你的问题,请参考以下文章
如何处理对尚不存在的对象的 ID 引用的 RestKit 嵌套数组?