1

次のように、コア データ テーブル t で group by を使用する概念的な SQL クエリがあります。

a, b, sum(c) a, b による t グループから c_sum を選択します。

コア データを使用してクエリを実行できます (スレッドGROUP BY with SUM() using Core Data で説明されているように)。NSFetchedResultsController を使用したいと思います。私は次のことを試しました:

  1. 「更新」操作で、上記のグループに対応するフェッチ リクエストをクエリで直接使用しようとしましたが、「NSFetchedResultsController は、NSDictionaryResultType を使用した変更追跡とフェッチ リクエストの両方をサポートしていません」という問題に遭遇しました。

  2. そこで次のことを考えました。レコードをテーブル t に保存します。次に、上記のクエリを実行し、結果を別のテーブル t1 に保存します。nsfetchedresultscontroller を t1 からの通常のフェッチに結び付けます。残念ながら、この場合、ドキュメントの保存操作が非同期であるため、クエリによるグループ化ではデータベースに何も表示されないという問題が発生します。

  3. 上記の問題に対処するために、テーブル t に挿入した直後にドキュメントを保存しようとしましたが、「この NSPersistentStoreCoordinator には永続ストアがありません。保存操作を実行できません。」というエラーが表示されました。

明らかな代替手段は、プログラムでグループ化して合計し、データを t1 に挿入することです。まだ試していない 2 番目の方法は、ドキュメントの保存通知をリッスンしてから、t1 に挿入することです。もう 1 つの方法は、nsfetchedresultscontroller を使用しないことです。これは避けたいと思います。

考え?

ありがとう!

UPDATE : OK 保存通知を検出し、次に grouped by クエリを使用して t から t1 を入力することは機能しますが、次の理由から、適切な解決策ではありません。これは明らかに良い考えではありません。

4

1 に答える 1