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? Sollte ich benutzerdefinierten Code schreiben, der die Datenbank anfänglich lädt, oder gibt es ein Tool, um es für mich zu tun?Daten in das Core-Datenschema laden
Antwort
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 Objekt Graph Management Framework ist (das zufälligerweise in der Lage ist, dieses Objektdiagramm auf Platte zu halten) und die Zuordnung zwischen Daten und Objektinstanzen hängt vom Schema ab benötigen mindestens einen Code). Wenn Sie die Daten bereits in einem anderen Format haben, sollten Sie den Abschnitt des Core Data Programming Guide unter importing data into a Core Data context lesen. 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, obwohl es nicht wirklich eine öffentliche API ist, ist das Core Data XML-Format ziemlich einfach mit der Hand zu arbeiten oder eine beliebige Anzahl von XML-basierten Tools zu verwenden. 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önnten diesen Speicher dann in einen persistenten SQLite-Speicher migrieren, und Sie sind auf dem Weg.
Derzeit, soweit ich weiß, müssen Sie benutzerdefinierten Code schreiben, um die Datenbank zu füllen.
Dies scheint wie ein Nachteil, ich würde wirklich gerne ein Werkzeug für Batch (Shell) Vor-Population von Datenquellen sehen, die von CoreData verwendet werden sollen.
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
Dann rufen Sie diese Methode zum ersten Mal die App startet:
- (void)loadDataFromPropertyList {
NSString *path = [[NSBundle mainBundle] pathForResource:@"someFile" ofType:@"plist"];
NSArray *items = [NSArray arrayWithContentsOfFile:path];
NSManagedObjectContext *ctx = self.managedObjectContext;
for (NSDictionary *dict in items) {
NSManagedObject *m = [NSEntityDescription insertNewObjectForEntityForName:@"TheNameOfYourEntity" inManagedObjectContext:ctx];
[m setValuesForKeysWithDictionary:dict];
}
NSError *err = nil;
[ctx save:&err];
if (err != nil) {
NSLog(@"error saving managed object context: %@", err);
}
}
Anruf loadDataFromPropertyList
das erste Mal die App startet, indem Sie den folgenden Code in der Implementierung von application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
einschließlich:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"firstRun"])
{
[defaults setObject:[NSDate date] forKey:@"firstRun"];
[[NSUserDefaults standardUserDefaults] synchronize];
[self loadDataFromPropertyList];
}
Danke dafür, es ist eine Weile her, seit ich das verwendet habe, bekomme ich einen SIGBRT Fehler, ich kann mich nicht erinnern, was ich löschen soll, wenn ich das nächste Mal laden möchte. Ideen? –
- 1. So beschleunigen Sie das Laden von Daten
- 2. Daten laden in Oracle
- 3. Daten in eine ExpandableListView laden
- 4. Daten in UIPickerView neu laden
- 5. Inkrementelle Daten laden in HBase
- 6. Laden von Daten in Eingabetextform
- 7. Daten dynamisch in HashMap laden
- 8. Daten infile laden
- 9. Daten laden mit rJava
- 10. Swift effiziente Daten laden
- 11. Daten laden mit RCaller
- 12. Daten beim Start laden
- 13. JavaScript - Daten schneller laden?
- 14. Firebase Daten laden onCreate()
- 15. Deaktivieren Sie priv für das Laden von Daten auf MySQL
- 16. Treeview Laden hierarchischer Daten
- 17. Primefaces DataTable waitTime für das Laden von Daten
- 18. Tabellenansicht Zelle Daten laden
- 19. Laden Sie das Bootstrap3 Modal mit dynamischen Daten
- 20. MySQL: Laden Daten infile
- 21. UICollectionView mehr Daten laden
- 22. Daten laden in Webservice in IOS
- 23. Laden unstrukturierter CSV-Daten in Hive
- 24. Laden Sie Daten in Redshift mit Node.js
- 25. So laden Sie Daten in Simile Timeline
- 26. Daten direkt in Selectbox angularjs laden
- 27. Asynchrone WinRT-Daten laden in Konstruktor
- 28. Dynamisch Laden von SubReport Daten in SSRS
- 29. Ember Daten laden nicht alle meine Daten
- 30. Zugriff Daten laden Fehler in. NET
Hey Andrei - sprichst du über das Auffüllen deiner SQLLite-Datenbank mit Informationen oder das Laden des Kerndatenmodells Sobald die App läuft? –