Core data 从字典迁移到核心数据实体

Core data 从字典迁移到核心数据实体,core-data,core-data-migration,Core Data,Core Data Migration,我有一个数据模型,其中有一个Person实体,它有一个可转换的属性,它是一个包含信息的字典数组。模型比那个大得多,这正是我遇到麻烦的部分。它是由一位老开发人员以这种方式设计的,在接管该项目时,我需要将其迁移为100%的核心数据 所以我需要做的是创建一个新实体,然后遍历Person数组中的每个字典,并使用该字典中的信息创建该实体的新实例。我原以为可以使用NSEntityMigrationPolicy为这个新实体设置自定义迁移,但核心数据迁移似乎需要X个源实体转换为X个目标实体。因为从技术上讲,我现

我有一个数据模型,其中有一个Person实体,它有一个可转换的属性,它是一个包含信息的字典数组。模型比那个大得多,这正是我遇到麻烦的部分。它是由一位老开发人员以这种方式设计的,在接管该项目时,我需要将其迁移为100%的核心数据

所以我需要做的是创建一个新实体,然后遍历Person数组中的每个字典,并使用该字典中的信息创建该实体的新实例。我原以为可以使用NSEntityMigrationPolicy为这个新实体设置自定义迁移,但核心数据迁移似乎需要X个源实体转换为X个目标实体。因为从技术上讲,我现在有0个源实体(因为它们位于核心数据并不真正了解的阵列中),所以我不确定如何在迁移过程中创建新实体


什么,或者说迁移过程中的什么地方,是实现我要实现的目标的最佳方式?我过去一直使用轻量级迁移,因此这是我在自定义迁移方面的第一次冒险。

了解您的数据模型(模式)会有所帮助,但假设您的Person实体现在拥有家庭地址和最喜欢的餐厅列表。让我们进一步假设您将创建新的实体地址和餐厅以及以下关系:

人只有一个地址,所以人和地址之间存在一对一的关系,称为“家庭地址”。地址与人之间的关系是相反的,因为许多人可以住在同一个地址

一个人与餐馆之间有一对多的关系(称为餐馆)。餐馆也可能和人有一对多的关系(尽管这可能是双向性没有真正意义的情况之一)

无论如何,重点是现在-除了PersonToPerson NSEntityMigrationPolicy子类之外,还有PersonToAddress和PersonToRestaurant。这些地方将是您解包旧数据并使用它实例化和初始化新地址和餐厅对象的地方

当然,还有很多其他复杂的问题。例如,您不希望为每个喜欢同一家餐厅的人创建同一家餐厅的新实例。您需要跟踪新创建的餐厅

您将需要从战略上对映射进行排序—可能是先与PersonToPerson进行排序

你可能想看看马库斯·扎拉的核心数据,甚至买他的书