在 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 嵌套数组?

Restkit 失败:访问返回的 json

你如何在 RestKit 0.20 中使用 RKDotNetDateFormatter?

如何处理与 RestKit 的关系同步(离线支持)

Restkit — 如何用可变键名映射 json 对象

如何处理 RESTKit 可达性断言失败