Wie gebe ich bei der NSCoding-Initialisierung in Swift ein bereits vorhandenes Core Data-Objekt zurück?

8

Wenn eine Instanz meiner Klasse mit NSCoding initialisiert wird, möchte ich sie durch ein existierendes -Objekt in der Core Data-Datenbank ersetzen, anstatt:

aufzurufen %Vor%

als das würde ein neues Objekt in die Datenbank einfügen.

%Vor%

Dies war ein relativ häufiges Ziel-C-Muster, aber ich kann nicht herausfinden, wie replizieren Sie dies in Swift 1.2, da das Zuweisen eines anderen Objekts zu self einen Kompilierungsfehler ergibt:

  

Kann in einer Methode nicht zu 'self' zugewiesen werden

und selbst wenn es erfolgreich war, scheint Swift es erforderlich zu machen, dass ich NSManagedObject als Initialisierer benenne, der ein neues Objekt in die Datenbank einfügen würde.

Wie ersetze ich ein Objekt bei der Initialisierung durch ein bereits vorhandenes in der Datenbank? Und wenn es nicht möglich ist (bitte geben Sie eine Referenz an, wenn dies der Fall ist), welches Muster sollte ich stattdessen verwenden?     
Santa Claus 12.07.2015, 21:04
quelle

1 Antwort

1

Sie können awakeAfterUsingCoder(_:) zum Ersetzen von self :

  

Sie können diese Methode verwenden, um redundante Objekte zu eliminieren, die vom Coder erstellt wurden. Wenn Sie beispielsweise nach dem Dekodieren eines Objekts feststellen, dass bereits ein äquivalentes Objekt vorhanden ist, können Sie das vorhandene Objekt zurückgeben. Wenn ein Ersatz zurückgegeben wird, ist Ihre übergeordnete Methode verantwortlich für die Freigabe des Empfängers.

%Vor%     
rintaro 13.07.2015, 03:06
quelle

Tags und Links