我想以默认方式使用RESTKit
,据我所知,这是通过查看唯一ID来更新缓存对象,并在找到新ID时将对象添加到缓存中或旧ID存在时从缓存中清除对象。
我想要做的是始终从URL端点获取对象,使用这些新对象设置缓存,删除所有以前存在的缓存对象。问题是我的JSON
没有任何唯一ID。
有可能这样做吗?在调用新对象之前,我没有尝试删除缓存中的对象。在我尝试太多其他事情之前,我想我先问这里是否有标准方法在RESTKit
中执行此操作。
提前致谢!
答案 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