Meine iOS App bettete eine .sqlite Datenbank mit einer Liste von Städten mit Postleitzahlen und Geolokationsinformationen.Core Data: Initialisiere Persisent Store mit einer gebündelten Datenbank
ich initialisieren meine Kerndaten wie folgt stapeln:
- (void)initializeCoreData {
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"cities" withExtension:@"momd"];
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSAssert(mom != nil, @"Error initializing Managed Object Model");
NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom];
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
[moc setPersistentStoreCoordinator:psc];
[self setManagedObjectContext:moc];
NSURL *storeURL = [[NSBundle mainBundle] URLForResource:@"cities" withExtension:@"sqlite"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
NSError *error = nil;
NSPersistentStoreCoordinator *psc = [[self managedObjectContext] persistentStoreCoordinator];
NSDictionary * options = @{NSSQLitePragmasOption:@{@"journal_mode":@"DELETE"}};
NSPersistentStore *store = [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error];
NSAssert(store != nil, @"Error initializing PSC: %@\n%@", [error localizedDescription], [error userInfo]);
});
}
Wie Sie sehen können, ich die Datenbank auf das Anwendungsverzeichnis nicht kopieren, sondern direkt aus dem Anwendungspaket lesen .
Ich muss diese Datenbank nur lesen, also ist es sicher, Core-Daten wie ich zu initialisieren, oder sollte ich die Datenbank vorher in das Anwendungsverzeichnis kopieren?