为了能够在Swift中处理一对多关系,您需要将property定义为:
class Node: NSManagedObject { @NSManaged var tags: NSSet}如果您尝试使用
NSMutableSet更改,则不会保存在CoreData中。当然,建议在以下位置定义反向链接
Node:
class Tag: NSManagedObject { @NSManaged var node: Node}但是Swift仍然无法在运行时生成动态访问器,因此我们需要手动定义它们。在类中定义它们
extension并放入
Entity+CoreData.swift文件中非常方便。波纹管是
Node+CoreData.swift文件的内容:
extension Node { func addTagObject(value:Tag) { var items = self.mutableSetValueForKey("tags"); items.addObject(value) } func removeTagObject(value:Tag) { var items = self.mutableSetValueForKey("tags"); items.removeObject(value) }}用法:
// somewhere before created/fetched node and tag entitiesnode.addTagObject(tag)
重要说明: 要使其全部正常工作,您应该验证CoreData模型中实体的类名称包括模块名称。例如
MyProjectName.Node



