Я использую Контекст UIManagedDocument для взаимодействия с моей базовой моделью данных. Тем не менее, я хотел бы первоначально загрузить контакт хранилища Persistant из локальной базы данных sqlite, которая у меня есть. Я считаю, что я должен использовать configurePersistentStoreCoordinatorForURL : но не знаю, как это сделать. Все, что я нашел в магазине Apple, было примером с базовыми данными делегата приложения, а не с этой функцией или способом UIManagedDocument.
Моя исходная база данных sqlite в папке ресурсов называется source_from.sqlite , а модель данных называется Source.xcdatamodeld
Также я предпочитаю иметь новую базу данных 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];
}
}