Ich implementiere eine navigationsbasierte Anwendung. Der Benutzer führt einen Drilldown zu dem Knoten von Interesse durch. Ich verwende Core Data, hauptsächlich weil ich es ausprobieren möchte. Wie lade ich die Datenbank zunächst? Soll ich benutzerdefinierten Code schreiben, der die Datenbank anfänglich lädt, oder gibt es ein Tool, um es für mich zu tun?
Es gibt keine automatische (d. h. integrierte) Methode zum Importieren von Daten in einen Core Data-Kontext.
Ich vermute, dass dies daran liegt, dass Core Data wirklich ein Framework zur Verwaltung von Objektdiagrammen ist (das zufälligerweise in der Lage ist, dieses Objektdiagramm auf Platte zu speichern) und die Zuordnung zwischen Daten und Objektinstanzen vom Schema abhängt (und dies auch erfordert) zumindest ein bisschen Code).
Wenn Sie die Daten bereits in einem anderen Format haben, sollten Sie den Abschnitt des Handbuchs zur Kerndatenprogrammierung unter Importieren von Daten in einen Core Data-Kontext . Wenn Sie die Daten nicht bereits in einem anderen Format haben, müssen Sie Code in beide Richtungen schreiben (um ein Zwischenformat zu erzeugen oder den Kontext direkt zu füllen).
Schließlich ist das Core Data XML-Format, obwohl es sich nicht wirklich um eine öffentliche API handelt, ziemlich einfach, um mit der Hand oder mit einer beliebigen Anzahl von XML-basierten Tools zu arbeiten. Abhängig von der Komplexität Ihrer Daten können Sie das XML-Schema möglicherweise so weit zurückentwickeln, dass ein XML-gestützter persistenter Speicher generiert wird. Sie können diesen Speicher dann in einen persistenten SQLite-Speicher migrieren, und Sie sind auf dem Weg.
Hier ist eine einfache Möglichkeit, den Core Data Store mit plists vorzuladen.
Erstellen Sie eine Eigenschaftsliste mit einem Array von Wörterbüchern. Stellen Sie sicher, dass die Schlüssel jedes Wörterbuchs den Schlüsseln Ihres verwalteten Objekts entsprechen.
alt text http://www.freeimagehosting.net/uploads/b0b1909e81.png
Rufen Sie diese Methode dann beim ersten Start der App auf:
%Vor% Rufen Sie loadDataFromPropertyList
beim ersten Start der App auf, indem Sie den folgenden Code in die Implementierung von application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
einfügen:
Momentan muss ich, soweit ich weiß, benutzerdefinierten Code schreiben, um die Datenbank zu füllen.
Das scheint ein Nachteil zu sein, ich würde wirklich gerne ein Tool für die Stapelverarbeitung (Shell) sehen, das Datenquellen vorbelegt, die von CoreData verwendet werden sollen.