Sfortunatamente CoreData con swift è ancora un dolore enorme soprattutto con le relazioni one-many ordinate. Sì, è ancora NSOrderedSet che viene utilizzato da CoreData per molte relazioni. La domanda è come aggiungere/rimuovere elementi a questo. Xcode non è mai stato in grado di generare accessors correttamente per il set ordinato finora - anche in Objective e Swift !!.
C'è questa discussione sul risparmio a-molti rapporti a Swift: How to define CoreData relationship in Swift?
Ma, ahimè !, niente di cui questa discussione sempre opera nel mondo Swift 2.0. Allora, qual è la soluzione per ora? Ho inserito questo e l'unico modo per farlo funzionare è generare le fonti per le entità in questione, in Objective C, e non in swift ed esportare le intestazioni di esse nell'intestazione del bridging. Inoltre è necessario assicurarsi di includere un importante fix soluzione per Xcode per generare funzioni di accesso corretti per insieme ordinato:
https://github.com/CFKevinRef/KCOrderedAccessorFix
È necessario assicurarsi di call- model.kc_generateOrderedSetAccessors() nel modello codice di creazione in AppDelegate per invocare questa correzione.
Una volta terminato, ora è possibile iniziare a utilizzare in modo sicuro gli accessori generati sul modello per aggiungere elementi a una relazione to-many.
ho creato un progetto di esempio ed è in github e spero che helps-
https://github.com/shripada/CoreDataToManyRelationshipInSwift2.0
Si scopre che è diventato più semplice in XCode 7 beta 5. Core Data ora utilizza NSSet per le relazioni uno-a-molti. Creare un NSMutableSet come "let clientSet: NSMutableSet = []" quindi aggiungere un oggetto Core Data al set "clientsSet.addobject (aClientObject)" e quindi inserire il set nella relazione come "event.clients = clientsSet" e tu " fatto. Tutto quello che dovevo fare era rigenerare le mie lezioni che non funzionavano (come il mio evento). Stavo ancora usando alcune classi generate da Core Data in XCode 7 beta 4 e questo mi stava rovinando (l'evento stava usando NSOrderedSet piuttosto che NSSet). – Kent
Oh, è bello sapere, il mio era Xcode 7, beta 4. – Shripada