当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'
答案 0 :(得分:1)
似乎每次实例只能关闭一次UIManagedDocument。
我遇到了这个问题并解决了问题,而不是重新打开同一个文档,我创建了一个具有相同数据的新文件(使用自定义的initWith ...方法)。
然后您可以“重新关闭”文档的新实例。
请记住,文档的新实例将具有新的托管对象上下文,因此您可能不应尝试使用原始文档中的托管对象。如果需要,可以在新实例中重新获取它们。
答案 1 :(得分:1)
我有同样的问题,删除第二个关闭为我解决了它。我发现只要我为第二次打开/关闭使用单独的UIManagedDocument实例,我就不会收到此错误。
另外,我发现在前面的代码中我没有得到一致的错误。
答案 2 :(得分:0)
请注意,当您拨打第二个时,您仍在第一个closeWithCompletionHandler
方法内。通过阅读似乎是原因的异常。
答案 3 :(得分:0)
打开和关闭文档是一种异步活动(意味着它在后台的另一个线程上执行)。通过打开和关闭彼此如此接近,你超越了另一个过程。在进行下一步(打开或关闭)之前,请确保完成另一个线程。