Core data Swift设置或更新核心数据中的资产 两个实体 体操运动员是一对多的人 我想当我保存一个新的比赛时,它会被分配给每个体操运动员,在那里他们可以为每个项目的个人得分

Core data Swift设置或更新核心数据中的资产 两个实体 体操运动员是一对多的人 我想当我保存一个新的比赛时,它会被分配给每个体操运动员,在那里他们可以为每个项目的个人得分,core-data,copy,mutable,nsset,Core Data,Copy,Mutable,Nsset,也许我的逻辑完全错了,但以下是我试图做的 let request=NSFetchRequest(entityName:“体操运动员”) }我认为为每个体操运动员反复复制比赛对象并不理想。例如,meetName将被多次存储。我不确定这是有意的 但是,在进行设置时,您的问题是如何分配“多对多”关系。对于一对多,简单地设置一对一关系总是比较容易的。(请记住,核心数据模型中始终存在反向关系。) 因此, myMeet.gymnast = item 这就是你所需要的 要添加和删除多个关系,可以使用此扩展:

也许我的逻辑完全错了,但以下是我试图做的

let request=NSFetchRequest(entityName:“体操运动员”)


}

我认为为每个
体操运动员反复复制
比赛对象并不理想。例如,
meetName
将被多次存储。我不确定这是有意的

但是,在进行设置时,您的问题是如何分配“多对多”关系。对于一对多,简单地设置一对一关系总是比较容易的。(请记住,核心数据模型中始终存在反向关系。)

因此,

myMeet.gymnast = item
这就是你所需要的

要添加和删除多个关系,可以使用此扩展:

// Support adding to many-to-many relationships

extension NSManagedObject {
    func addObject(value: NSManagedObject, forKey key: String) {
        let items = self.mutableSetValueForKey(key)
        items.addObject(value)
    }

    func removeObject(value: NSManagedObject, forKey key: String) {
        let items = self.mutableSetValueForKey(key)
        items.removeObject(value)
    }
}

如果你想让每一位体操运动员都参加每一场比赛,那么这种关系应该是多对多的。谢谢你们两位的回复。我同意,并且我已经将该关系更改为多对多,但仍然不确定如何保存它。2016-03-26 13:36:48.326 GymScore[1111:343330]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“多对多关系中不可接受的值类型:property=“gymnasts”;问题={((实体:Meet;id:0x13f7ac240;数据:{NSValidationErrorKey:gymnasts,NSLocalizedDescription:操作无法完成。(Cocoa错误1550。)]扩展名Meet{func addObject(值:Meet,forKey键:String){let items=self.mutableSetValueForKey(键)items.addObject(值)}func removeObject(value:Meet,forKey:String){let items=self.mutableSetValueForKey(key)items.removeObject(value)}如果let meetname=meetNameText.text{item.meetname=meetname item.addObject(item,forKey:meets)
// Support adding to many-to-many relationships

extension NSManagedObject {
    func addObject(value: NSManagedObject, forKey key: String) {
        let items = self.mutableSetValueForKey(key)
        items.addObject(value)
    }

    func removeObject(value: NSManagedObject, forKey key: String) {
        let items = self.mutableSetValueForKey(key)
        items.removeObject(value)
    }
}