0

私が作成しているアプリがあり、UIManagedDocumentコア データと iCloud を処理するために を使用しています。アプリの開始時に、ファイルを開き、UIManagedDocumentiCloud ディレクトリで初期化します。

これは、プログラムを初めてロードしたときとそれ以降は正常に機能しますが、iCloud を使用しているため、アプリを削除して再ロードし、クラウドからデータを再ロードできる必要があることを理解しています。

アプリを削除してリロードすると、URL を取得して初期化できますUIManagedDocument[document openWithCompletionHandler:^(BOOL success){}]、ドキュメントにアクセスするはずだったスレッドに到達すると、EXC_BAD_ACCESS が返されます。

これは、ドキュメントをコア データでセットアップするために使用するコードであり、iCloud の URL は良好です。これはiCloudの最初の経験です。私は何を間違っていますか?

- (void)setupDocument
{
    NSURL *url = [self iCloudDocumentsDirectory];
    url = [url URLByAppendingPathComponent:@"ZJournalData"];
    UIManagedDocument *document = [[ZManagedDocument alloc] initWithFileURL:url];

    NSLog(@"%@", document);


    [document.persistentStoreOptions setValue:[document.fileURL lastPathComponent] forKey:NSPersistentStoreUbiquitousContentNameKey];
    [document.persistentStoreOptions setValue:[[self iCloudDirectory] URLByAppendingPathComponent:@"CoreDataLogs"] forKey:NSPersistentStoreUbiquitousContentURLKey];

    if (![[NSFileManager defaultManager] fileExistsAtPath:[url path]]) {
        [document saveToURL:url
           forSaveOperation:UIDocumentSaveForCreating
          completionHandler:^(BOOL success) {
              if (success) {
                  self.managedObjectContext = document.managedObjectContext;



              }
          }];
    } else if (document.documentState == UIDocumentStateClosed) {
        [document openWithCompletionHandler:^(BOOL success) {
            if (success) {
                self.managedObjectContext = document.managedObjectContext;

            }
        }];
    } else {
         NSLog(@"%@", document);
        self.managedObjectContext = document.managedObjectContext;
    }
}
4

0 に答える 0