UIManagedDocument を単純なテスト アプリケーションに組み込む方法を理解することができました。期待どおりに動作します。ただし、ユーザーが iCloud を使用したくない場合でも機能するように、この基本的なアプリケーションにサポートを追加しています。
したがって、URLForUbiquityContainerIdentifier:
メソッドが「nil」を返す場合は、提案された方法を使用してローカル ドキュメント ディレクトリの 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);
}
}];
}