0

まず、私が取り組んでいることの背景を少し説明します。作成した API から情報を取得する CRUD iOS アプリケーションを作成しています。データを取り出したら、それを CoreData に保存します。次に、NSFetchedResultsController を使用して、このデータをテーブル ビューに表示します。問題は、テーブル ビューの上にモーダル ビューを表示してからモーダル ビューを閉じると、テーブルがクリアされ、データを再ダウンロードして再度挿入する以外のすべてが機能しないことです。

ただし、API から新しいデータを取得しているときに問題が発生します。試行錯誤を繰り返して、永続ストア内のすべての古いデータを削除する場所に問題を絞り込みました (2 つのストアがあり、1 つはユーザーが作成したデータ用で、もう 1 つは他のユーザーからのデータ用です)。このコード スニペットは、データのフェッチを処理する API 呼び出しからのものです。

    [self deleteAllEntitiesNamed:@"Object"];
    [self parseResponseObjectIntoManagedObjects:[response results] inStoreWithURL:storeURL];
    success(response);

呼び出しは他のユーザーの[self deleteAllEntitiesNamed:@"Object"];ストアに入り、次のコードですべてのオブジェクト エンティティを削除します。

    NSArray *result = [self performFetchRequestForEntityNamed:entity inStoreWithURL:url];

    for(id r in result)
    {
        [self.managedObjectContext deleteObject:r];
    }

この関数呼び出しまで問題を追跡しました。API ハンドラーで delete 呼び出しをコメント アウトすると、ビュー間でテーブルを維持するのに問題はありませんが、既にストアにある多くのデータを複製するという悪い副作用があります。古いストアを削除した直後にデータを再挿入するので意味がありませんが、ストア内のアイテムの削除について何かが欠けている可能性があります。

ストア全体を削除して再初期化しようとしましたが、データがまったく読み込まれません。

利用可能な洞察を事前に感謝します。

編集:また、テーブル ビューに戻った後にストアからオブジェクトを取り出そうとしたときに、終了直後にオブジェクトをストアから取得することに成功した同じフェッチ要求を使用して空の結果を取得することも追加する必要があります。成功コールバックでの API 呼び出し。

4

0 に答える 0