2016-03-25 5 views
-1
  • Два Сущности
  • Гимнастка является один ко многим, чтобы встретиться
  • Я хотел бы, когда я сохраняю новую встречу, он получает назначение в качестве соревнований для каждой гимнастки где они затем могут забить свои индивидам баллы для каждого события

может быть, я совершенно неправильно в моей логике, но вот то, что я пытаюсь сделатьSwift набор или обновление активов в основных данных

запроса ЛПЭ = 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

Если вы хотите подключить каждый гимнаст к каждому Meet, то releationship должно быть много-ко-многим. – Willeke

ответ

0

Я думаю, что это не является идеальным для репликации Meet объекта снова и снова для каждого Gymnast. Например, meetName будет храниться несколько раз. Я не уверен, что это предназначено.

Однако, перейдя к вашей настройке, ваша проблема заключается в том, как вы назначаете отношения «многие». Для одного-ко-многим всегда проще просто установить отношения «один-один». (Помните, что всегда есть обратная связь в модели Core Data.)

Таким образом,

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», причина: «Неприемлемый тип отношения во многих отношениях: свойство =« гимнасты »; проблема = {( (entity: Meet; id: 0x13f7ac240 ; данные: { – debratton

+0

См. мое редактирование, которое показывает как вы добавляете ко многим отношениям. – Mundi