无法打开UIManagedDocument进行编辑

时间:2012-08-22 14:25:54

标签: objective-c xcode core-data nsfetchedresultscontroller

我有一个关于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!");
    }

}

1 个答案:

答案 0 :(得分:2)

openWithCompletionHandler异步方法。它只启动一个后台线程来打开和读取文档。检查documentState时,此后台线程可能尚未完成,因此状态仍处于“关闭”状态。

openWithCompletionHandler在文档打开时(或失败时)执行completionHandler块。