如何NSManagedObject在Swift 的子类中将对象添加到关系属性中?
NSManagedObject
在Objective-C中,当您NSManagedObject从数据模型以Xcode 生成子类时,会自动生成一个包含以下声明的类扩展:
@interface MyManagedObject (CoreDataGeneratedAccessors) - (void)addMySubObject: (MyRelationshipObject *)value; - (void)addMySubObjects: (NSSet *)values; @end
但是,Xcode当前缺少Swift类的此类生成功能。
如果我尝试直接在Swift对象上调用等效方法:
myObject.addSubObject(subObject)
…我在方法调用中遇到编译器错误,因为这些生成的访问器不可见。
@NSManaged如文档中所述,我已将Relationship属性声明为。
@NSManaged
还是我必须还原为具有关系的数据模型的Objective-C对象?
是的,这将不再起作用,Swift无法以这种方式在运行时生成访问器,这会破坏类型系统。
您要做的就是使用关键路径:
var manyRelation = myObject.valueForKeyPath("subObjects") as NSMutableSet manyRelation.addObject(subObject) /* (Not tested) */