如何将实体上的属性迁移到Core Data中的实体

时间:2012-11-20 06:02:57

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

我正在努力解决相当复杂的核心数据映射问题,而我似乎无法解决这个问题。基本上,我有一个托管对象的版本,其属性是一个字符串。这个字符串在许多对象中是相同的。因为它是相同的,我认为改变它是有意义的,它是一个单一的实体,具有属性'名称'。

entity.attribute应该成为entity.newObject.name,其中属性和名称都是字符串。

为了使问题复杂化,我希望当前在许多实体中拆分的属性成为实体的单个实例。此外,新实体应该具有一对多的关系,该关系返回到具有与newObject.name匹配的属性的对象。

有什么方法可以通过在Core Data中映射模型来实现这一点吗?我知道自动迁移是不可能的。

我想离开这个:

Diagram of current model

到此:

Diagram of wanted model

我这样做是为了加快与特定会话中特定拼图类型匹配的次数的抓取请求。我们的想法是 - [NSSet intersectSet]比将每个单独时间的puzzleType属性与字符串进行比较要快得多。我将如何通过映射模型或以编程方式进行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用自动迁移,您无法自动推断映射。

高级别任务将是:

  1. 创建新的模型版本。
  2. 按照您的喜好配置新模型。
  3. 将新模型版本设置为当前版本。
  4. 创建从旧版本到新版本的映射模型,您可以在其中设置$ source.attributes映射到新属性的内容。
  5. 配置持久性存储协调器时,将NSInferMappingModelAutomaticallyOption选项设置为NO。
  6. 将NSMigratePersistentStoresAutomaticallyOption选项保留为YES。如果要使用迁移管理器显示迁移进度,则只将此项设置为NO。
  7. 如果您需要更深入地了解这些项目,请告诉我们。