【问题标题】:Cannot open UIManagedDocument for editing无法打开 UIManagedDocument 进行编辑
【发布时间】:2012-08-22 14:25:54
【问题描述】:

我有一个关于 CoreData 的问题,其上下文源自 UIManagedDocument。

在下面的这个 sn-p 中,它从不记录“打开文档时出错”,但总是“文档仍然关闭”——为什么我不能打开文档?请问有什么想法吗?

-(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!");
    }

}

【问题讨论】:

    标签: objective-c xcode core-data nsfetchedresultscontroller


    【解决方案1】:

    openWithCompletionHandler 是一个异步 方法。它只启动一个后台线程来打开和读取文档。当你查看documentState时,这个后台线程可能还没有完成,因此状态仍然是“关闭”。

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

    【讨论】:

    • 这个。我在同一件事上花了太多时间,操作系统打开文件只需要(令人惊讶的)很长时间。
    • @John67:我的回答有帮助吗?那么如果你能“接受”这个答案就好了。
    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多