RESTKit - 如何始终替换所有缓存的对象而不是更新?

时间:2013-11-11 20:23:26

标签: ios iphone objective-c restkit restkit-0.20

我想以默认方式使用RESTKit,据我所知,这是通过查看唯一ID来更新缓存对象,并在找到新ID时将对象添加到缓存中或旧ID存在时从缓存中清除对象。

我想要做的是始终从URL端点获取对象,使用这些新对象设置缓存,删除所有以前存在的缓存对象。问题是我的JSON没有任何唯一ID。

有可能这样做吗?在调用新对象之前,我没有尝试删除缓存中的对象。在我尝试太多其他事情之前,我想我先问这里是否有标准方法在RESTKit中执行此操作。

提前致谢!

2 个答案:

答案 0 :(得分:3)

是的,你可以。你不会想要为你所描述的内容使用唯一的ID(尽管如果你这样做会有效,但你可能会在更新的对象中留下一些旧数据)。

无论如何,省略映射中的任何唯一ID,并指定一个fetch request block(部分Fetch Request Blocks and Deleting Orphaned Objects),它只是简单地获取实体的所有实例(无谓词)。这将导致RestKit删除所有旧对象并在映射期间保存所有新对象。

只要您更新正确的上下文并正确保存,您在发出请求之前删除所有对象的测试应该有效。

答案 1 :(得分:2)

正如Wain所说,这样做的方法是使用RKFetchRequestBlock。我不是100%确定获取请求块和删除孤立对象 RKManagedObjectRequestOperation部分中发生了什么,但在我的情况下,我需要做的就是返回{{1} }为每个匹配的路径。由于我的应用程序和三个实体中有三个端点,因此我需要进行三次单独的模式匹配检查并返回3个唯一的NSFetchRequest。根据我的理解,如果返回NSFetchRequest,管理器将自动查询获取请求块并执行孤立对象清理。

这是我的代码:

NSFetchRequest