我有一个基于 UIDocument 的应用程序,没有 iCloud 支持。用户可以创建文档,并将它们保存到应用程序的 Document 目录。
我还创建了一些“示例”文档,并将它们与应用程序的捆绑包一起传递。我希望用户能够像打开自己的文档一样打开示例文档:
NSArray *samplesContent = [[NSBundle mainBundle] URLsForResourcesWithExtension:@"doco" subdirectory:@"Samples"];
for (NSURL *sampleURL in samplesContent) {
Doco *doco = [[Doco alloc] initWithFileURL:sampleURL];
[doco disableEditing];
[doco openWithCompletionHandler:^(BOOL success) {
if (success) {
[self.docos addObject:doco];
if (self.docos.count >= samplesContent.count) {
[self.tableView reloadData];
}
} else DLog(@"Failed to open %@", [sampleURL pathExtension]);
}];
}
我看到的是这样的:
- 在 上
viewDidLoad
,docs 数组将填充示例文档,并在应用程序首次启动时显示在 tableView 中。这里没有问题,一切都很顺利和美好。 然后我使用以下代码退出视图以关闭所有打开的文档:
int count = 0; for (Doco *doco in self.docos) { if (doco.documentState == UIDocumentStateNormal) { [doco closeWithCompletionHandler:nil]; count++; } } DLog(@"Closed %i docs", count);
当我再次打开视图时,应该再次填充文档数组并重新填充 tableView,但没有任何反应。
下面的完成处理程序永远不会被调用,尽管 URL 指向同一个文件并且它是有效的:
[doco openWithCompletionHandler:^(BOOL success) {}
对于存储在 Documents 中的用户生成的文档,我没有这个问题,所以我的假设是它与自动保存有关,它在只读包上被调用并失败
但我有点卡在这部分,任何帮助将不胜感激。