【问题标题】:CoreData automatic migrations in static library静态库中的 CoreData 自动迁移
【发布时间】:2014-02-24 15:00:28
【问题描述】:

我目前正在使用 Magical Record 将数据库存储在我的 iOS 应用程序中。

我将核心数据 xcdatamodeld 存储在一个静态库中,该库是我的应用程序的子项目。

应用程序可以很好地读取/写入数据库。

我刚刚向我的一个模型添加了一个属性,它应该会触发从我的模型版本自动迁移,但是这没有发生。

以下代码 [MagicalRecord shouldDeleteStoreOnModelMismatch] 返回 true,因此正在删除和创建我的数据库。

查看 Apples 自动迁移指南添加单个属性应该没问题。

我也在设置这样的 Magical Record [MagicalRecord setupAutoMigratingCoreDataStack];

我想知道是否因为核心数据 .xcdatamodeld 在子项目中,我必须做任何额外的工作 迁移成功

【问题讨论】:

    标签: ios core-data migration magicalrecord


    【解决方案1】:

    查看[NSPersistentStore addPersistantStoreWithType:configuration:URL:options:error]返回的错误后确定

    它返回找不到源存储的模型。

    所以我做了一些谷歌搜索,发现如果我将 App Model Version 添加到我的 .xcdatamodeld 文件中

    在我的第二个版本中,我将该属性添加到同一模型中并且迁移工作正常。

    我的印象是我不需要这样做,因为添加属性应该是 被认为是轻量级迁移,不需要我创建新的模型版本。

    我对这个有误吗?

    【讨论】:

    • 您需要为所做的每个更改集合创建模型的新版本并保留旧版本。如果您的应用仍在开发中,您只需删除您的开发数据存储,应用将正确重建存储
    • 轻量级迁移总是需要模型迁移。只允许不影响数据库结构的更改(如获取的属性等)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多