Frage

Bei der Entwicklung meiner ersten ernsthaften iPhone -Anwendung (dh ich möchte sie tatsächlich im AppStore herausholen), brauchte ich eine gute Möglichkeit, meine Daten darzustellen. Anstatt mit Kerndaten zu gehen, entschied ich mich (dumm, glaube ich), Klassen zu verwenden, um meine Daten darzustellen.

Ich habe drei Klassen erstellt, mmdot, mmshowMovement und mmshow. Die MMshowMovement enthält Instanzen der MMDOT -Klasse in einem Array, da die MMshow Instanzen von MMshowMovement enthält. Jede Klasse hat nach einer schönen Möglichkeit, jede Klasse hat eine Menge Logik, die damit eingehen muss. Deshalb dachte ich, dass der Unterricht eine gute Möglichkeit schien, all diese Daten darzustellen.

Meine Frage ist, gibt es eine einfache Möglichkeit, die Instanzen dieser Klassen zu speichern, damit ich die Daten wiederherstellen kann, nachdem die Anwendung wieder geöffnet wurde? Ich habe Anwendungen auf OS X mit einem Nskeyedarchiver angelegt. Wäre es auf dem iPhone ähnlich? Wäre es stattdessen einfacher, erneut Kerndaten zu verwenden (diese Objekte sind sehr komplex, insbesondere MMDOT mit etwa 15 Instanzvariablen, jetzt, wo ich es mir ansehe, vielleicht nicht so komplex)?

Ich bin hier wirklich ratlos.

War es hilfreich?

Lösung

Sie können Nskeyedarchiver absolut verwenden, um Ihre Objekte zu bestehen. Ich bin ein Fan einer der beiden Methoden, die Entscheidung liegt hauptsächlich bei Ihren Anwendungsanforderungen. Ich glaube nicht, dass es viel Arbeit sein wird, Ihre Objekte in Coredata neu zu modellieren. Ohne etwas über Ihre Anwendung zu wissen, würde ich sagen, wenn Sie mit einem einfachen Modell eine einfache Beharrlichkeit durchführen gehen.

Andere Tipps

Wenn Sie viele Objektinstanzen haben, sind Sie wahrscheinlich besser dran, wenn Sie Kerndaten verwenden. Dies hilft Ihnen, Dinge zu lagern, bei Abfragen zu helfen, bestimmte Sätze von Objekten zu erhalten, und so weiter. Keyarchiving ist wirklich viel nützlicher, wenn Sie eine Handvoll Instanzen speichern, aber einige Nachteile haben - insbesondere ist es schwieriger, Speicherlecks von nicht angeworbenen Objekten aufzuspüren.

Kerndaten können auch für Sie die Ergebnisse ausführen, sodass Sie nicht in den Entre -Inhalt eines großen Arrays abrufen, wenn Sie es nicht benötigen.

Ich habe neulich meine Klassen serialisiert und mich mit NsuserDefaults verwendet. Ich gebe nur alle Interna meiner Objekte einen einzigartigen Schlüssel, der auf dem Objekt basiert. Schien schnell für mich zu arbeiten.

Schrieb hier einen Blog darüber: http://technolojiadev.blogspot.com/2009/12/serialize-this.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top