Guardar relaciones de Core-to-many en Swift

Tengo una relación de uno a varios que se parece así,

modelo de coredata

He configurado mis classs model en un file para que coincida:

import CoreData import Foundation class Board: NSManagedObject { @NSManaged var boardColor: String @NSManaged var boardCustomBackground: AnyObject? @NSManaged var boardID: String @NSManaged var boardName: String @NSManaged var lists: NSSet } class List: NSManagedObject { @NSManaged var listID: String @NSManaged var listName: String @NSManaged var board: Board } 

Debido a que estoy obteniendo datos de varios puntos finales de JSON, tengo que save mis lists por separado de mis tablas. Lo que quiero hacer es crear / actualizar una list para un tablero con un ID de tablero coincidente .

Aquí es donde estoy después de varios bashs:

 func saveList(boardID: String, listName: String, listID: String) { let request = NSFetchRequest(entityName: "Board") var error: NSError? = nil request.pnetworkingicate = NSPnetworkingicate(format: "boardID like %@", boardID) let results: NSArray = context.executeFetchRequest(request, error: &error) if results.count > 0 { for result in results { let board = result as Board let list = NSEntityDescription.insertNewObjectForEntityForName("List", inManagedObjectContext: context) as List println("💃 want to save \(listName) in \(board.boardName)") board.lists.addListObject(lists) list.listName = listName list.listID = listID } } } 

Basado en la definición de las relaciones CoreData en Swift y esto , traté de implementar la respuesta de @ Keenle para definir objects de list dentro de una pizarra:

 import Foundation extension Board { func addListObject(value:List) { var items = self.mutableSetValueForKey("lists"); items.addObject(value) } func removeListObject(value:List) { var items = self.mutableSetValueForKey("lists"); items.removeObject(value) } } 

Sin embargo, encontré el siguiente error en board.lists.addListObject(lists) : 'NSSet' no tiene un miembro llamado 'addListObject'`

En lugar de board.lists.addListObject(lists) , también intenté board.lists.listName = listName como implicado en este ejemplo de Obj-C , pero lamentablemente tampoco funcionó.

(Además, la salida de printing está especificando correctamente el tablero y la list correctos).

¡Gracias por adelantado!

    En una relación de uno a varios, es más fácil establecer la dirección "hacia uno" de las relaciones inversas, en su caso, solo

     list.board = board 

    por lo que los methods de extensión en realidad no son necesarios aquí.

    Debe invocar addListObject(...) a board object:

     board.addListObject(list) // notice that we pass just one object 

    Además, si desea poder agregar un set de lists a un object de board particular, puede mejorar su extensión de class de Board con methods que aceptan un set de objects:

     func addList(values: NSSet) { var items = self.mutableSetValueForKey("lists"); for value in values { items.addObject(value) } } func removeList(values: NSSet) { var items = self.mutableSetValueForKey("lists"); for value in values { items.removeObject(value) } } 

    Si define:

     @NSManaged var lists: Set<List> 

    Entonces usted puede hacer:

     board.lists.insert(list)