从Dictionary迁移到Core Data Entity

时间:2010-10-22 21:29:08

标签: core-data core-data-migration

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

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

什么,或者更确切地说,在迁移过程中,哪些是我想要完成的最佳方式?我过去总是使用轻量级迁移,所以这是我在自定义迁移中的第一次冒险。

1 个答案:

答案 0 :(得分:0)

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

Person有一个Address,所以从Person到Address之间有一对一的关系称为“homeAddress”。从地址到人,有一个倒数多对的关系,因为许多人可以住在同一个地址。

人与餐馆有许多关系(称为餐馆)。餐厅也可能与人有很多关系(虽然这可能是双向性没有意义的情况之一)。

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

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

您需要战略性地订购映射 - 可能首先使用PersonToPerson。

您可能想查看Marcus Zarra的核心数据sample code,甚至可能会购买他的书。