我正在使用RestKit框架,我想发一个POST HTTP请求。响应是JSON。我想将JSON响应自动放入CoreData中。
我不确切地知道要调用哪些方法来发出请求。我知道我应该使用RKObjectManager
的方法,但我找不到合适的方法。
我找到了这个方法postObject:delegate:
,但我不知道要作为参数传递的对象。
我也在文档中找到了这个方法:loadObjectsAtResourcePath:usingBlock:
但是我不能使用它,因为它告诉我:
No visible @interface for 'RKObjectManager' declares the selector 'loadObjectsAtResourcePath:usingBlock:'
答案 0 :(得分:53)
我假设您正在使用RestKit 0.20.0,但熟悉RestKit 0.10.x API并且正在咨询过时的信息。您应该转向的第一个地方是RKObjectManager.h
- 标题始终是最新的,并且将包含有关可用方法的文档。接下来,您始终可以查看根据the latest API docs site上的源代码构建的最新文档。
您要在此处创建RKObjectRequestOperation
:
NSDictionary *dictionary = @{ @"firstParam": @(12345), @"secondParam": @"whatever"};
NSMutableURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodPOST path:@"/whatever" parameters:parameters];
RKObjectRequestOperation *operation = [objectManager objectRequestOperationWithRequest:request success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSLog(@"Loading mapping result: %@", result);
} failure:nil];
如果您要尝试定位核心数据,那么您将要使用RKManagedObjectRequestOperation
和managedObjectRequestOperationWithRequest:success:failure:
。 RestKit Github站点上的README.md和头文档中还有其他示例,单元测试中还有一公吨的代码供参考。
接下来,回应JRG-Developer的评论:
嗯,这是一个非常可怕的答案,原因有很多。 (免责声明:我是RestKit的主要开发者)首先,您使用的是什么版本的RestKit?如果您使用的是最新版本(即在0.20.x预发布系列中),那么加载对象集合的方法已被更好的名称替换:getObjectsAtPath:
。这在API文档(Making Requests by Path)和0.10 to 0.20 migration guide中都有详细记录。
我怀疑这里的原始问题源于引用过时的文档以及最近的代码。
接下来,您推荐的一系列技术远设置和使用更复杂,以便在您真正理解库后完成RestKit为您提供的相同内容。
让我们逐点看看:
<强> AFNetworking 强>
JSONKit
NSJSONSerialization
相比,JSONKit的JSON解析速度更高 - 但只有毫秒。 <强> MagicalRecord 强>
让我们来谈谈真正的问题在实施iOS / OS X应用程序时的作用,该应用程序暂时将API建模到Core Data中:
AFJSONRequestOperation
在成功块中回击并更新Core Data,对吧?错误。现在,您异步执行网络I / O,然后执行在主线程上更新数据模型的 CPU密集型任务。现在您的应用程序性能糟透了,您不知道该怎么做。如何将同步移到后台?完成后如何通知用户界面?一旦您的申请成功,您将不得不面对许多其他问题,包括可测试性,可维护性等。您对这些事情的看法是多少?
我想我的主要观点是(从我的角度来看)听到疯狂的欢呼或嘲笑来自花生画廊关于如何解决基本的工程问题。现实情况是,基本复杂性问题的解决方案将具有与接近问题相关的学习曲线。
采用不连续的功能并确定一个令人满意的解决方案要远远比试图解决更大但更有趣的问题要容易得多。
但这并不意味着你要通过捆绑一堆你已经听说过提供一个问题子集的良好实现而不是一个更大的聚合问题方法的库来产生一个更强大的解决方案。
为什么没有任何人开源他们自己的AFN / JSONKit /核心数据/ MagicalRecord mashup,如果它们比RestKit好得多,可以将RestKit从水中吹出来?
我害怕清醒的事实是:它只是那么容易。
干杯!