Swift 2.0 Eins-zu-viele Beziehung - noch NSOrderedSet?

8

In Swift 2.0 sind One-to-Many-Beziehungen in Core Data noch NSOrderedSets?

Ich kann anscheinend nicht in der Lage sein, richtig zu wirken, um keine Fehler zu verursachen.

Hat jemand in Swift 2.0 ein einfaches Beispiel dafür?

    
Kent 21.08.2015, 01:38
quelle

2 Antworten

1

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 -

Ссылка

    
Shripada 21.08.2015, 06:32
quelle
4

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:

%Vor%

Und dann wird das Hinzufügen und Entfernen von Elementen trivial, weil Sie einfach die Methoden insert und remove von Set verwenden können.

    
FranMowinckel 19.02.2016 15:10
quelle

Tags und Links