0

だから私は奇妙な状況にあります。

アプリの開発ビルドを再インストールすると、CoreData データベースが作成されます。アプリの起動シーケンスのどこかで、単純なフィルター処理されたNSPredicateフェッチ リクエストを試みます。

多くの場合 (毎回ではありません)、この最初のフェッチは無期限にブロックされ、正常に続行するにはアプリを再起動する必要があります。

この問題に対処する方法を理解できないようです。これを確実に再現することはできないため、うまくいくと思うことをするたびに、後で何も役に立たなかったことがわかります。

これについて何か考えはありますか?

4

1 に答える 1

3

iOS で Core Data を使用する優れた方法は、作成とすべてのアクセスをディスパッチ キューの背後に置くことです。そのため、初期化ルーチンでシリアル ディスパッチ キューを作成し、そのキューにブロックをディスパッチすることで、シリアル ディスパッチ キューを作成して投入します。キューはシリアルであるため、明らかにこれをすべて非同期で行うことができます。フェッチもそのように行い、成功したら、メイン キューにメッセージを投稿し、アプリの準備が整ったことをアプリに委任できます。

アプリが起動し、コア データのセットアップが必要になったら、何らかのフラグを設定してから、UI をブロックし、スピナーをスローして、フェッチが返されるまで音楽を再生します。

于 2012-08-17T20:02:41.907 に答える