Wenn eine Instanz meiner Klasse mit NSCoding
initialisiert wird, möchte ich sie durch ein existierendes -Objekt in der Core Data-Datenbank ersetzen, anstatt:
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.
Sie können awakeAfterUsingCoder(_:)
zum Ersetzen von self
:
%Vor%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.