UIDocument无法再次关闭?

时间:2012-03-05 09:00:56

标签: objective-c ios nsexception uidocument

当UIDocument关闭时,它可以再次关闭吗?即使重新打开后它的documentState是UIDocumentStateNormal吗?

请帮帮我。非常感谢!

[document openWithCompletionHandler:^(BOOL success) {
    if (success) {

        [document closeWithCompletionHandler:^(BOOL success) {
            if (success) {

                [document openWithCompletionHandler:^(BOOL success) {
                    if (success) {

                        NSLog(@"%d", document.documentState);

                        //Exception
                        [document closeWithCompletionHandler:^(BOOL success) {
                            if (success) {
                            } 
                        }];
                    } 
                }];
            } 
        }];
    } 
}];

当closeWithCompletionHandler在“异常”标记处调用时,抛出异常:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'closeWithCompletionHandler called while document is already closing'

4 个答案:

答案 0 :(得分:1)

似乎每次实例只能关闭一次UIManagedDocument。

我遇到了这个问题并解决了问题,而不是重新打开同一个文档,我创建了一个具有相同数据的新文件(使用自定义的initWith ...方法)。

然后您可以“重新关闭”文档的新实例。

请记住,文档的新实例将具有新的托管对象上下文,因此您可能不应尝试使用原始文档中的托管对象。如果需要,可以在新实例中重新获取它们。

答案 1 :(得分:1)

我有同样的问题,删除第二个关闭为我解决了它。我发现只要我为第二次打开/关闭使用单独的UIManagedDocument实例,我就不会收到此错误。

另外,我发现在前面的代码中我没有得到一致的错误。

答案 2 :(得分:0)

请注意,当您拨打第二个时,您仍在第一个closeWithCompletionHandler方法内。通过阅读似乎是原因的异常。

答案 3 :(得分:0)

打开和关闭文档是一种异步活动(意味着它在后台的另一个线程上执行)。通过打开和关闭彼此如此接近,你超越了另一个过程。在进行下一步(打开或关闭)之前,请确保完成另一个线程。