静态库中的 CoreData 自动迁移
Posted
技术标签:
【中文标题】静态库中的 CoreData 自动迁移【英文标题】:CoreData automatic migrations in static library 【发布时间】:2014-02-24 15:00:28 【问题描述】:我目前正在使用 Magical Record 将数据库存储在我的 ios 应用程序中。
我将核心数据 xcdatamodeld 存储在一个静态库中,该库是我的应用程序的子项目。
应用程序可以很好地读取/写入数据库。
我刚刚向我的一个模型添加了一个属性,它应该会触发从我的模型版本自动迁移,但是这没有发生。
以下代码 [MagicalRecord shouldDeleteStoreOnModelMismatch] 返回 true,因此正在删除和创建我的数据库。
查看 Apples 自动迁移指南添加单个属性应该没问题。
我也在设置这样的 Magical Record [MagicalRecord setupAutoMigratingCoreDataStack];
我想知道是否因为核心数据 .xcdatamodeld 在子项目中,我必须做任何额外的工作 迁移成功
【问题讨论】:
【参考方案1】:查看[NSPersistentStore addPersistantStoreWithType:configuration:URL:options:error]返回的错误后确定
它返回找不到源存储的模型。
所以我做了一些谷歌搜索,发现如果我将 App Model Version 添加到我的 .xcdatamodeld 文件中
在我的第二个版本中,我将该属性添加到同一模型中并且迁移工作正常。
我的印象是我不需要这样做,因为添加属性应该是 被认为是轻量级迁移,不需要我创建新的模型版本。
我对这个有误吗?
【讨论】:
您需要为所做的每个更改集合创建模型的新版本并保留旧版本。如果您的应用仍在开发中,您只需删除您的开发数据存储,应用将正确重建存储 轻量级迁移总是需要模型迁移。只允许不影响数据库结构的更改(如获取的属性等)。以上是关于静态库中的 CoreData 自动迁移的主要内容,如果未能解决你的问题,请参考以下文章