我有一个我正在制作的应用,它使用UIManagedDocument
来处理核心数据和iCloud。在我的应用程序开始时,我打开文件并使用iCloud目录初始化UIManagedDocument
。
这在我第一次加载程序和随后的时间时运行正常但是我的理解是因为我使用iCloud我应该能够删除应用程序并重新加载它并让它从云中重新加载数据。
当我删除应用程序并重新加载它时,它能够获取URL并初始化UIManagedDocument
但是一旦到达[document openWithCompletionHandler:^(BOOL success){}]
,应该访问该文档的线程将返回EXC_BAD_ACCESS。 / p>
这是我使用核心数据设置文档的代码,iCloud网址很好。这是我第一次使用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;
}
}