Objective c CoreData将可选关系迁移到非可选关系

Objective c CoreData将可选关系迁移到非可选关系,objective-c,cocoa,core-data,migration,Objective C,Cocoa,Core Data,Migration,我正在编写一个使用CoreData的Cocoa应用程序。我现在向测试人员发布了几个版本,他们希望在升级到最新的beta版本时能够保留数据。到目前为止,我一直在使用映射模型自动地将数据库从一个版本迁移到另一个版本,没有问题 但这一次,我必须迁移一个数据库,在这个数据库中,曾经的可选关系变成了非可选关系。当CoreData迁移到此版本时,它崩溃,表示需要此关系。这是有道理的——如果没有早期版本中的关系,它怎么可能知道为这些对象放什么呢 因此,我想我需要在某个地方编写一些代码,创建一个新的托管对象,以

我正在编写一个使用CoreData的Cocoa应用程序。我现在向测试人员发布了几个版本,他们希望在升级到最新的beta版本时能够保留数据。到目前为止,我一直在使用映射模型自动地将数据库从一个版本迁移到另一个版本,没有问题

但这一次,我必须迁移一个数据库,在这个数据库中,曾经的可选关系变成了非可选关系。当CoreData迁移到此版本时,它崩溃,表示需要此关系。这是有道理的——如果没有早期版本中的关系,它怎么可能知道为这些对象放什么呢

因此,我想我需要在某个地方编写一些代码,创建一个新的托管对象,以填充旧数据库中为零的关系。我想这可能意味着子类化
NSMigrationPolicy
,但我在网上找到的所有示例都显示了如何迁移属性,而不是关系


所以我的问题是:如何在迁移时创建NSManagedObject来填充从可选到非可选的关系?有趣的问题。我现在没有现成的答案,但我会从覆盖开始
-(BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject*)站实体映射:(NSEntityMapping*)映射管理器:(NSMigrationManager*)管理器错误:(NSError**)错误


似乎在这一点上,您可以确定给定实例(NSManagedObject*)是否具有空关系,如果是,则填充它。

我认为最简单的方法是创建一个单独的脚本,从旧的核心数据存储读取数据并写入新的核心数据存储,根据需要动态创建任何所需对象