私はこれに完全に固執しています。私の基本的な問題は、次のことです。
- (NSFetchedResultsController *)fetchedResultsController
managedObjectContext / UIManagedDocumentがnilであるため、コアコアエンティティを読み取ろうとするとメソッドがクラッシュします。現時点では、UIManagedDocumentが開いていない/準備ができていないことが原因だと思います。そのため、過去3時間、ドキュメントが開かれるまでデリゲートメソッドが起動されないように作成しようとしています。
これは、ドキュメントを取得するために使用しているコードです。
if (!self.document) {
[[CATManagedDocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
self.document = document;
}];
}
これは私のアプリの他の場所では問題なく機能しますが、テーブルビューのデリゲートメソッドに対して開くプロセスが十分に速くないようです。
私がこれまでに見たリンク:
http://omegadelta.net/2011/05/10/how-to-wait-for-ios-methods-with-completion-blocks-to-finish/
dispatch_queue_tとdispatch_syncの呼び出しについて
グランドセントラルディスパッチ(GCD)とperformSelector-より良い説明が必要
iOS-スレッド(GCDを使用)がジョブを終了したときに通知を受ける方法
私は試しました:NSNotification(CATManagedDocumentHandlerで設定)を取得するまでメインスレッドをブロックし、ブロックコールバックを取得するまでメインスレッドをブロックします。
これらはどちらも機能しません。アプリがフリーズします。私はこれについて間違って考えていますか?ドキュメントが開く/準備ができるまでデリゲートメソッドを待機させるにはどうすればよいですか?それとも、これで取るべき別のアプローチがありますか?
ありがとう
カール。