我可以防止 RestKit+CoreData 覆盖本地实体更改吗?

Posted

技术标签:

【中文标题】我可以防止 RestKit+CoreData 覆盖本地实体更改吗?【英文标题】:Can I prevent RestKit+CoreData from overriding local entity changes? 【发布时间】:2012-05-21 20:59:48 【问题描述】:

我已经配置了一个RKObjectMappingProvider 子类,其中包含一系列对象映射,这些映射将各种服务端点映射到我的本地核心数据实体和持久存储。假设我有一个服务端点/api/workorders,我使用loadObjectsAtResourcePath:usingBlock: 来获取 X 工作订单列表并持久保存到 Core Data。接下来,用户使用应用程序修改其中 2 个实体,但不将更改推送回服务。

如果用户再次调用/api/workorders 来获取最新的工单,有没有办法让RestKit 自动覆盖对已更改实体的本地修改?

【问题讨论】:

【参考方案1】:

简短的回答是否定的,你必须自己做,而且很快就会变得讨厌。

您需要覆盖自定义托管对象类的设置器。

This kind of thing.

您需要一个属性才能知道它已被更新。您需要在实体更新时创建并设置它。我会在行级别执行此操作, 然后检查属性,仅在未设置标志时更新。 当然,如果用户想再次更新值,您需要处理这种情况:) Restkit 很棒,但不能为您处理完全同步。

【讨论】:

啊,我害怕这个。我在想一个潜在的解决方案是添加一个类似于 primaryKeyAttribute 的 isModifiedAttribute 属性并使用它。

以上是关于我可以防止 RestKit+CoreData 覆盖本地实体更改吗?的主要内容,如果未能解决你的问题,请参考以下文章

防止空 JSON 响应被映射 RestKit 0.22.0

无法让 Restkit 0.20 + CoreData 工作

RestKit 强制 CoreData 保存

RESTKit:在覆盖之前将 GET 对象与本地持久化的对象进行比较

RestKit 与直接 CoreData

RestKit + CoreData,理解 RKManagedObjectRequestOperation