核心数据在轻量级迁移后执行操作

时间:2015-06-24 11:26:46

标签: ios core-data migration core-data-migration

我有app在更新核心数据模型时执行一些轻量级迁移。

但是,我希望在迁移发生后执行一些特定操作作为一次性操作。

例如,我有两个NSManagedObjects ... 文档 DocumentLayout 。目前, 文档 DocumentLayout 之间没有关系,除非应用正在寻找' documentName '在相应的对象中匹配' layoutName '。

这是低效的,所以我想在两者之间创建真正的核心数据关系,然后在迁移发生后,通过迭代并创建关系来链接这两个对象。

我已经看过像......这样的代码。

NSManagedObjectModel *destinationModel = [persistentStoreCoordinator managedObjectModel];
BOOL pscCompatibile = [destinationModel isConfiguration:nil compatibleWithStoreMetadata:sourceMetadata];

...检查是否需要迁移并进行相应的工作但我需要将其作为一次性操作,因为在应用程序的生命周期中,可能存储在 Document <中的文档/ em> ,它不需要与 DocumentLayout 建立关系,因此如果每次对数据模型进行更新时此操作都会运行,那么关系将是创建不是必需的。

所以,我可以在应用程序中查看(比方说)一个versionNumber标志来检测这个并且只运行一次操作并阻止它每次运行但这看起来不优雅且容易出错。

那么,有没有办法在特定迁移后运行一次操作,然后再也不会再运行?

1 个答案:

答案 0 :(得分:1)

这是一个非常好的问题,我花了很多时间试图找出答案。到目前为止我找到的最佳答案可以在article from ObjC.io找到(我与他们没有任何关系)。

只是发布链接的道歉,但我认为答案要比几行代码复杂得多。