iCloud をサポートしていない UIDocument ベースのアプリがあります。ユーザーはドキュメントを作成し、アプリのドキュメント ディレクトリに保存できます。
また、いくつかの「サンプル」ドキュメントを作成し、それらをアプリのバンドルに渡しました。ユーザーが自分のドキュメントを開くのと同じ方法でサンプル ドキュメントを開くことができるようにします。
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) {}
ドキュメントに保存されているユーザー生成ドキュメントではこの問題は発生していないため、読み取り専用バンドルで呼び出されて失敗する自動保存と関係があると思います
しかし、私はこの部分で立ち往生しています。どんな助けでも大歓迎です。