我可以防止 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 覆盖本地实体更改吗?的主要内容,如果未能解决你的问题,请参考以下文章
无法让 Restkit 0.20 + CoreData 工作