CoreData
【问题】建了两个Entities,可是自动生成的relationships在.h文件里类型为NSManageObject而不是想要的类别。
【在.xcdatamodeld文件中建立关联对象时,一定要手动选中Inverse中被关联的目标属性】
【缘由】
在建立relationships的时候,xcode5会尝试“自动”关联。举个例子,如下两个Entities:BBUCoreDataEquip BBUCoreDataStage
BBUCoreDataEquip 新建一个指向 BBUCoreDataStage的Relationship叫stage。第一次添加的时候Inverse选项自动是No Inverse
图一
再给BBUCoreDataStage新建一个指向 BBUCoreDataEquip 的Relationship叫equips。此时xcode5会自动关联到stage。
图二
回头看BBUCoreDataEquip 里的stage,Inverse选项依然是No Inverse,你只能手动选择关联到equips。问题就出在这里了,本来想让 BBUCoreDataStage的equips属性是BBUCoreDataEquip类型,可是自动生成的BBUCoreDataStage.h 里的却是NSManagedObject类型。
编译代码时就会发现以前都没怎么关注的自动生成的CoreData对象,现在出了一堆编译warning。
【解决】
方法1. 手工改动BBUCoreDataStage.h 文件,把属性类型改成BBUCoreDataEquip类型,别忘了在头文件正式代码第一行写上@class BBUCoreDataEquip