我有一个 Worker 和 Event 实体。我在为事件创建新工作人员时遇到问题,工作人员实体有相应的事件,但事件实体没有保存工作人员。(设置反向选项时,这不应该自动发生吗)
class Event: NSManagedObject {
@NSManaged var id: NSNumber
@NSManaged var name: String
@NSManaged var startTime: String
@NSManaged var endTime: String
@NSManaged var workers: NSMutableSet
func addWorker(name: String, startTime: String, endTime: String) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext!
var worker: Worker = NSEntityDescription.insertNewObjectForEntityForName("Worker", inManagedObjectContext: managedContext) as! Worker
worker.name = name
worker.startTime = startTime
worker.endTime = endTime
worker.id = Worker.getNewWorkerId()
worker.events.addObject(self)
var error: NSError?
if !managedContext.save(&error) {
println("Could not save \(error), \(error?.userInfo)")
}
}
}
最佳答案
您还必须在关系的两端将关系定义为“对多”。要这样定义关系,请选择相关关系,然后在右 Pane 中将“类型”设置为“对多”。
此外,NSManagedObject 子类中的多对多属性应该是 NSSet 和 NSOrderedSet 类型,而不是 NSMutableSet。请参阅此处的文档:Managed Object Accessor Methods .
如果您想添加有关关系的任何其他信息,则需要“关联”或“加入”实体。 ( CoreData Many-To-Many Relationships )
关于swift - 填充核心数据多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29967766/