0

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);
                       }
                   }];
}
4

1 に答える 1

0

私の永続ストア オプションには、ユビキタス ストアに使用されるキーが含まれていたことがわかりました。これらは、ドキュメントの永続ストア オプションに含めるべきではありません。

于 2013-04-27T20:04:51.340 に答える