Мне удалось понять, как включить UIManagedDocument в простое тестовое приложение, и оно работает так, как ожидалось! Однако теперь я добавляю поддержку этого базового приложения, поэтому он будет работать, если пользователь не захочет использовать iCloud.Сохранение UIManagedDocuments, когда контейнер uibiquity (iCloud) недоступен
Так что, когда URLForUbiquityContainerIdentifier:
метод возвращает ноль ', я возвращаю URL каталога локальных документов с использованием предложенного метода
NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
return [NSURL fileURLWithPath:documentsDirectoryPath];
Однако, когда я пытаюсь экономить UIManagedDocument
на локальный URL (например: file://localhost/var/mobile/Applications/some-long-identifier/Documents/d.dox
) Я получаю следующее сообщение об ошибке:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores. It cannot perform a save operation.'
Используя этот метод сохранения:
if (![[NSFileManager defaultManager] fileExistsAtPath:self.managedDocument.fileURL.path]) {
[self.documentDatabase saveToURL:self.managedDocument.fileURL
forSaveOperation:UIDocumentSaveForCreating
completionHandler:^(BOOL success) {
if (success) {
//
// Add default database stuff here.
//
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self.documentDatabase.managedObjectContext performBlock:^{
[Note newNoteInContext:self.managedDocument.managedObjectContext];
}];
});
} else {
NSLog(@"Error saving %@", self.managedDocument.fileURL.lastPathComponent);
}
}];
}