0

我有一个正在制作的应用程序,它使用 aUIManagedDocument来处理核心数据和 iCloud。在我的应用程序开始时,我打开文件并UIManagedDocument使用 iCloud 目录初始化。

这在我第一次加载程序和随后的时间时工作正常,但据我了解,因为我使用 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