我有一个关于CoreData的问题,其中包含来自UIManagedDocument的上下文。
在下面的代码片段中,它永远不会记录“打开文档时出错”,但始终“文档仍然关闭” - 为什么我无法打开文档?有什么想法吗?
-(void)openDocument
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"Default Date Database"];
UIManagedDocument *document = [[UIManagedDocument alloc] initWithFileURL:url];
if ([[NSFileManager defaultManager] fileExistsAtPath:[url path]])
{
[document openWithCompletionHandler:^(BOOL success){
if (!success) {
// Handle the error.
NSLog(@"Error opening the document");
}
}];
}
else
{
[document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
if (!success) {
// Handle the error.
NSLog(@"Error saving the file");
}
}];
}
self.theDocument = document;
if (self.theDocument.documentState == UIDocumentStateClosed)
{
NSLog(@"Document still closed!");
}
}
答案 0 :(得分:2)
openWithCompletionHandler
是异步方法。它只启动一个后台线程来打开和读取文档。检查documentState
时,此后台线程可能尚未完成,因此状态仍处于“关闭”状态。
openWithCompletionHandler
在文档打开时(或失败时)执行completionHandler块。