0

私の viewWillAppear では、複数のフェッチ リクエストを実行します。最初のフェッチ リクエストで、アイテムが見つかるはずなのに何も見つからないことに気付きました。最初のフェッチ リクエストを実行する前にメイン スレッドをスリープさせてみましたが、十分な数のアイテムが見つかったことを確認しました。私もシミュレーターでしか実行していません。

だから私の質問は、コアデータは「初期化」などに時間がかかるのですか? デバイスでテストするとき、これについて心配する必要がありますか (私はまだ開発者メンバーシップを持っていないので、デバイスでテストすることはできません)? フェッチ要求を実行しても安全かどうかを「確認」する方法はありますか?

また、遅延なしで最初のフェッチ要求の NSError をチェックしたところ、null でした。

編集:

私のviewWillAppearコードがリクエストされたので、ここにあります。あまり役に立ちませんが。

    [NSThread sleepForTimeInterval:0.1];
    for (NSString *category in self.categories) {
        [self updateSection:category];
    }

self.cateogires は私のテーブル ビューのセクションに過ぎず、 updateSection: セクションを更新します。

EDIT2:

NSLog ステートメントをさらに調査したところ、次のような結果が得られました。

NSLog ステートメントを追加して、フェッチ要求の後に見つかったオブジェクトの数と、ドキュメントの現在の状態をログに記録しました。何らかの理由で、ドキュメントが閉じているように見えても、フェッチ結果を取得しています。

Category1 has 3 values
Doc is open? NO
Category2 has 6 values
Doc is open? NO
Category3 has 3 values
Doc is open? NO
Category4 has 2 values
Doc is open? NO

私の問題は、 [myManagedDocument openWithCompletionHandler: ] の completionHandler を使用してフェッチ要求を待機および実行していないことだと思います。しかし、ドキュメントが閉じられているときにクエリを実行すると、なぜ fetch の結果が得られるのでしょうか?

4

1 に答える 1

0

同時実行タイプを次のように変更することをお勧めします

NSMainQueueConcurrencyType. これにより、操作がシーケンシャルになります。

于 2015-02-21T19:15:43.590 に答える