Leider ist CoreData mit swift immer noch ein großer Schmerz, besonders bei geordneten Ein-Viele-Beziehungen. Ja, es ist immer noch NSOrderedSet, das von CoreData für viele Beziehungen verwendet wird. Die Frage ist, wie Sie Elemente hinzufügen / entfernen. Xcode war bisher noch nie in der Lage, Accessoren für die geordnete Menge zu erzeugen - sogar in Objective, geschweige denn Swift !!.
Es gibt diesen Thread zum Speichern von vielen Beziehungen in Swift: Wie definiert man die CoreData-Beziehung in Swift?
Aber leider! Nichts, was in diesem Thread erwähnt wird, funktioniert jemals in der Swift 2.0 Welt. Also, was ist die Problemumgehung für jetzt? Ich habe mich damit beschäftigt, und die einzige Möglichkeit, dies zum Laufen zu bringen, besteht darin, die Quellen für fragliche Entitäten in Objective C und nicht in swift zu generieren und die Header davon in den Bridging-Header zu exportieren. Außerdem müssen Sie sicherstellen, dass Sie einen wichtigen Fix für die Problemumgehung für Xcode einfügen, um die richtigen Zugriffsmethoden für die geordnete Menge zu erstellen:
Sie sollten sicherstellen, dass Sie anrufen- model.kc_generateOrderedSetAccessors () in Ihrem Modellerstellungscode in AppDelegate, um diesen Fix aufzurufen.
Sobald Sie fertig sind, können Sie jetzt sicher beginnen, die generierten Accessoren in Ihrem Modell zu verwenden, um Elemente zu einer Zu-Viele-Beziehung hinzuzufügen.
Ich habe ein Beispielprojekt erstellt und bin in Github und hoffe, es hilft -
Nur wenn Sie die Beziehung mit der Option "Bestellt" kennzeichnen. Wenn nicht, dann ist es ein NSSet
.
Ich stimme der akzeptierten Antwort nicht zu, da in Swift 2.0 die Überbrückung von NSSet
nach Set
automatisch erfolgt. Wenn Sie also die CoreData-Entität unterklassieren können, können Sie einfach Folgendes schreiben:
Und dann wird das Hinzufügen und Entfernen von Elementen trivial, weil Sie einfach die Methoden insert
und remove
von Set
verwenden können.
Tags und Links ios core-data swift nsorderedset