好吧,我最后创建了一个简单的Core Data项目,只需要一个Parent和一个Child实体,就可以看到当我选择并取消选择Parent作为Core Data模型中Child实体的Parent Entity时发生了什么。
通过使用 -com.apple.CoreData.SQLDebug 1 我能够看到只有当Child实体没有Parent作为父实体时才创建复合索引。
-com.apple.CoreData.SQLDebug 1
顺便说一句,我在运行iOS 8.3。
作为旁注,我调试了核心数据代码,它似乎是一个 createIndexesForEntity: 私人班级的方法 NSSQLConnection ,被称为。但是,在方法代码的最开始,它调用一个方法 isRootEntity 另一个私人课程 NSSQLEntity 。当返回NO时,它会跳过方法代码并返回而不做任何操作。
createIndexesForEntity:
NSSQLConnection
isRootEntity
NSSQLEntity
这个功能对我来说非常重要,我最终从项目核心数据模型中的所有实体中删除了父实体设置。