2016-03-25 22 views
-1
  • 两个实体
  • 体操运动员是一对多,以满足
  • 我想,当我保存新的满足,它就会被分配到一个满足每个体操运动员哪里然后他们可以得分的人得分为每个事件

也许我完全错误的,我的逻辑,但这里是我想要做的斯威夫特设置或更新资产

令请求= NSFetchRequest(的entityName:“体操运动员”)

do { 

     let entities = try AD.managedObjectContext.executeFetchRequest(request) as! [Gymnast] 

     for item in entities { 

      if let first = item.valueForKey("firstName"), last = item.valueForKey("lastName") { 

       print("Name: \(first) \(last)") 

       let myMeet = NSEntityDescription.insertNewObjectForEntityForName("Meet", inManagedObjectContext: AD.managedObjectContext) as! Meet 

       myMeet.meetName = "Winter Classic" 

       let myMeets = item.meets!.mutableCopy() as! NSMutableSet 
       myMeets.addObject(myMeet) 

       item.meets = myMeets.copy() as? NSSet 

       AD.saveContext() 

      } 

     } 

    } catch { 

    } 
} 

}

+0

,该releationship应该多到很多。 – Willeke

回答

0

我认为这是不理想的一遍又一遍的复制Meet对象为每个Gymnast。例如,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) 
    } 
} 
+0

感谢您的回复。我同意,并且我已经将这种关系改变为许多,但仍然不确定如何保存它。 – debratton

+0

2016-03-26 13:36:48.326 GymScore [1111:343330] ***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'对多关系中的值不可接受的类型:property =“gymnasts”;问题= {((entity:Meet; id:0x13f7ac240 ; data:{ – debratton

+0

查看我的编辑,显示(可可错误1550.)] – Mundi