填充coredata多对多关系

时间:2015-04-30 12:27:17

标签: swift core-data

我有一个工人和活动实体。我在为事件创建新工作人员时遇到问题,工作人员实体有相应的事件,但事件实体没有保存工人。(设置反向选项时不应该自动发生这种情况)

   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)")
        }
    }

}

1 个答案:

答案 0 :(得分:1)

您还必须将关系定义为" To Many"关系的两端。要定义这样的关系,请选择相关关系和右窗格设置'类型'对许多人来说,

此外,NSManagedObject子类中的多对多属性应为NSSet和NSOrderedSet类型,而不是NSMutableSet。请参阅此处的文档:Managed Object Accessor Methods

enter image description here

如果您想添加关于该关系的任何其他信息,请联系'或者加入'将需要实体。 (CoreData Many-To-Many Relationships