也许我的逻辑完全错了,但这就是我想做的事情
让request = NSFetchRequest(entityName:" Gymnast")
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 :(得分: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)
}
}