2 Stimmen

Kann ich ein NSManagedObject serialisieren?

Ich muss ein Objekt (NSManagedObject (NSMO)-Unterklasse) an einen Webdienst senden und es später abrufen. Ich hatte gehofft, ich könnte es irgendwie serialisieren, aber ich hoffe, dass ich nicht durch die Kodierung Reifen zu springen.

Ich kann ein einfaches NSMO-Objekt in ein Wörterbuch umwandeln, indem ich: [instance dictionaryWithValuesForKeys:instance.entity.attributesByName.allKeys];

Mein NSMO hat jedoch mehrere Ebenen, was die Beziehungen zu anderen NSMOs betrifft. Wie kann ich am besten eine vollständig serialisierte Version des Objekts erstellen?

4voto

benzado Punkte 78100

Wenn Sie dies auf allgemeine Weise tun wollen, können Sie eine rekursive Methode schreiben serializedDictionary (entweder in einer Unterklasse von NSManagedObject oder in einer Kategorie), die:

  1. Erzeugt ein leeres NSMutableDictionary.
  2. Für jede Eigenschaft fügt den Schlüssel und den Wert in das Wörterbuch ein.
  3. Für jede Beziehung ein, fügt den Beziehungsnamen als Schlüssel hinzu und ruft dann serializedDictionary auf das Objekt und fügt dies als Wert hinzu. Wenn es sich um eine to-many-Beziehung handelt, müssen Sie diese Werte in ein NSArray einfügen.

Wenn es möglich ist, dass ein untergeordnetes Objekt mit einem übergeordneten Objekt in Beziehung steht (was sehr gut möglich ist, wenn Sie inverse Beziehungen verwenden, wie Core Data es empfiehlt), müssen Sie entweder die Beziehungen, die Sie speichern, auf eine Whitelist setzen (was einfacher ist) oder einen Satz weitergeben, um zu verfolgen, welche Objekte bereits serialisiert wurden, damit Sie sie nicht erneut kodieren müssen (was schwieriger ist und ich nicht empfehle).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X