核心数据,NSManagedObject 在应用版本之间发生变化
Posted
技术标签:
【中文标题】核心数据,NSManagedObject 在应用版本之间发生变化【英文标题】:core data, NSManagedObject changed between app versions 【发布时间】:2011-06-08 15:11:11 【问题描述】:我现在在 App-Store 有一个应用,它使用带有持久存储的 Core-Data 将数据保存为 SQL-Lite-store-type,在设备本地保存。
其实Model很简单,我里面只有一个NSManagedObject,叫“Product”。
在下一个版本中,我想通过以下方式编辑“产品”属性:添加一个新属性并删除 5 个属性。 (没有应用程序因为不一致而崩溃......)
另外,在用户升级后首次启动应用程序时,我想删除旧的存储数据库,因为它不再与应用程序相关。
我阅读了“核心数据模型版本控制和数据迁移编程指南”,但仍然不确定在这种情况下最佳实践是什么。 (我应该使用“轻量级迁移”吗?)
请帮帮我……
【问题讨论】:
【参考方案1】:使用轻量级迁移是这里最简单的选择。如果您所做的只是添加属性,轻量级迁移可以让您避免处理不一致错误。
【讨论】:
我需要删除 5 个属性!!!据我了解,“轻量级迁移”不支持它。那么:如何在升级版本首次启动时删除旧的存储数据库? 添加和删除属性很好。文档没有明确说它支持在轻量级迁移中添加属性,但确实如此。在执行轻量级迁移时,您也不需要删除旧数据库。如果要删除旧数据库,可以在应用程序委托中执行此操作,其中使用以下代码将持久存储添加到持久存储协调器:'[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];'以上是关于核心数据,NSManagedObject 在应用版本之间发生变化的主要内容,如果未能解决你的问题,请参考以下文章
核心数据。对大尺寸 NSManagedObject 的 NSMutableSet 进行排序
iPhone核心数据可以缓存NSManagedObject吗?