2

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

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

使事情复杂化的是,我希望当前拆分为多个实体的属性成为实体的单个实例。此外,新实体应该与具有匹配 newObject.name 的属性的对象具有一对多的关系。

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

我想从这个出发:

当前型号示意图

对此:

通缉模型图

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

4

1 回答 1

0

您可以使用自动迁移,只是不能自动推断映射。

高级任务将是:

  1. 创建一个新的模型版本。
  2. 根据需要配置新模型。
  3. 将新模型版本设置为当前版本。
  4. 创建从旧版本到新版本的映射模型,您将在其中设置 $source.attributes 映射到哪些新属性。
  5. 配置持久存储协调器时,将 NSInferMappingModelAutomaticallyOption 选项设置为 NO。
  6. 将 NSMigratePersistentStoresAutomaticallyOption 选项保留为 YES。仅当您想使用迁移管理器显示迁移进度时,才将其设置为 NO。

如果您需要对这些项目中的任何一个进行更深入的指导,请告诉我。

于 2012-12-03T11:37:25.913 回答