Я использую UIManagedDocument's Контекст для взаимодействия с моей базовой моделью данных. Тем не менее, я хотел бы сначала загрузить контакт Persistant Store из локальной базы данных sqlite, которая у меня есть. Я считаю, что я должен использовать configurePersistentStoreCoordinatorForURL: но понятия не имею, как это сделать. Все, что я нашел в магазине Apple, было примером с Data Data Data Core Data, а не этой функцией или способом UIManagedDocument. Мой источник базы данных SQLite в папке ресурсов называется source_from.sqlite и модель данных называется Source.xcdatamodeldИспользование UIManagedDocument для загрузки базы данных sqlite
Кроме того, я предпочитаю иметь новую БД SQLite в пакете документов. Не уверен, что миграция произойдет автоматически?
Спасибо за вашу помощь,
Росс
Вот что я и планирует сделать это в методе инициализации:
-(void) initializeSourceDatabaseWithData:(UIManagedDocument *) sourceDatabase{
// if no persistent store for the uidocument preload it
// from sqlite file
}
-(void) useDocument{
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.sourceDatabase.fileURL path]]){
[self.sourceDatabase saveToURL:self.sourceDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
[self setupFetchedResultController];
[self initializeSourceDatabaseWithData:self.sourceDatabase];
}];
}else if (self.sourceDatabase.documentState == UIDocumentStateClosed){
[self.sourceDatabase openWithCompletionHandler:^(BOOL success){
[self setupFetchedResultController];
}];
}else if(self.sourceDatabase.documentState == UIDocumentStateNormal){
[self setupFetchedResultController];
}
}
-(void) setSourceDatabase:(UIManagedDocument *)sourceDatabase{
if (sourceDatabase != _sourceDatabase){
sourceDatabase = _sourceDatabase;
[self useDocument];
}
}
-(void) viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
if (!self.sourceDatabase){
NSURL * url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"Source Database"];
self.sourceDatabase = [[UIManagedDocument alloc] initWithFileURL:url];
}
}
Следующее решение (http://readncode.com/blog/Load-SQLite-db-into-Core-Data-in-iOS-5/) Делает то, что мне нужно, но с помощью утилиты кажется слишком большой работой для Что мне нужно. Нужно ли использовать эту функцию для установки постоянного хранилища? –