0

これは、説明するのが少し難しい質問です。これに対する答えを 2 週間以上探していましたが、このユース ケースの解決策を見つけることができませんでした。

核心的な詳細に入る前に、この画像を見てください。 ここに画像の説明を入力

ユーザーには、最初にメイン リストビューが表示されます。このビューに表示されるデータ (患者の記録) は、API から取得されます。ここで注意すべき重要な点の 1 つは、現在の日付のデータのみが取得されるということです。データベースには過去の日数と今後の日数のレコードがありますが、デフォルトではデータは現在の日付です。API を呼び出してデータを取得したら、それらからオブジェクトを作成し、それらのオブジェクトを Core Data に格納します。次に、コア データ モデルからそれらを取得し、テーブル ビューに表示します。

メイン リストの各患者レコードは、実際には小さなレコードのグループです。ユーザーがレコードをタップすると、サブ リストが表示され、すべての小さなレコードの詳細を確認できます。彼は、これらの小さな記録項目を編集、削除することもできます。

ここで助けが必要です。ユーザーがサブ リストにいる間、そのビュー内から日付を変更できます。そして、新しく選択された日付の小さなレコードの詳細が表示されます。これは、API を再度呼び出し、選択した日付をパラメーターとして送信し、その日付のデータを取得してサブ リスト ビューに表示することを意味します。

しかし、この日付変更操作全体がメイン リストのデータに影響を与えることはありません。つまり、サブ リスト内で日付が変更されても、メイン リストの現在の日付のデータは変更されません。ユーザーが [戻る] ボタンをタップしてメイン リストに移動した場合、古い現在の日付のデータは、ユーザーがそこを離れたときにすぐに利用できるようにする必要があり、サブ リスト ビューの新しいデータは、そのビューを離れると破棄されます。

もう 1 つのことは、新しいデータは一時的なものですが、ユーザーはそれらのレコードを編集できる必要があるということです。単なる表示用ではありません。そのため、それらをコア データに追加する必要があります。

私の質問は、サブ リスト内の新しい日付のデータを取得したら、元のデータ セットに影響を与えずにそのデータを一時的に保持する方法はありますか?

助けていただければ幸いです。

ありがとうございました。

4

1 に答える 1

1

「API から取得した」と言うときは、Web API からネットワーク経由で取得したことを意味すると思います。右?

あなたが尋ねた質問への答えとして、これは別の NSManagedObjectContext の良いケースのように見えます。サブ リストの新しい MOC を作成し、終了したらその MOC を破棄できます。これにより、サブ リスト ビューで Core Data を操作できるようになりますが、変更はデータストアに保持されません。

もう 1 つの方法は、永続ストレージまたはメモリ内に永続ストアを複製することです。

ただし、Core Data はこの仕事に適したツールではないようです。Web サービスからデータを取得し、そのさまざまなチャンクをさまざまな期間保持している場合、コア データとの戦いに無駄な時間を費やすことになります。

于 2015-03-03T19:02:54.060 に答える