如何在通过 Core Data 保存我的 RestKit 托管对象之前对其进行修改?

Posted

技术标签:

【中文标题】如何在通过 Core Data 保存我的 RestKit 托管对象之前对其进行修改?【英文标题】:How can I modify my my RestKit managed object before it is saved via Core Data? 【发布时间】:2012-04-26 17:06:04 【问题描述】:

我已经很好地设置了带有 Core Data 托管对象支持的 RestKit,但我有一些字段不存在于服务器上,仅存在于本地模型类中。

如何在对象被持久化之前设置这些字段。我可以实现类似“willSave”的委托方法吗?

谢谢

【问题讨论】:

在您保存之前,该对象不会被持久化(也就是通过托管对象上下文插入到持久化存储中)。为什么不能在保存之前设置属性? 当我调用 loadObjectsAtResourcePath 时,持久化由 RKManagedObjectStore 支持的 RKObjectManager 自动处理。我一直在寻找一种在保存发生之前拦截它的方法 【参考方案1】:

我不太明白你想要完成什么,但你可以覆盖 NSManagedObject 中的willSave。文档很好地解释了它的作用。

【讨论】:

我认为这是实现这一目标的最简单方法。谢谢 此解决方案如何与缓存对象交互?您是否只能在第一次收到新对象时修改值,而不是在找到缓存值时修改值? @deepwinter 我不太了解 RestKit,但你可以看看 -awakeFromFetch(和 -awakeFromInsert,就此而言)。它们使您有机会在其他时间更新对象。如果这不能解决您的问题,请继续并发布一个新问题。【参考方案2】:

如果你想在保存之前修改传入的数据,你应该考虑willMapData

【讨论】:

以上是关于如何在通过 Core Data 保存我的 RestKit 托管对象之前对其进行修改?的主要内容,如果未能解决你的问题,请参考以下文章

Core-Data 后台保存性能问题

如何在 Core Data 中保存用户偏好?

用户更新软件后如何保存Core Data?

如何在 Swift 中将字符串数组保存到 Core Data

如何在 Swift 中将可转换属性保存到 Core Data

即使在 Core Data 上下文保存后数据也没有保留