NSPredicateの理解とCoreDataのクエリ方法を理解する上で助けが必要です。私が持っているものは次のとおりです。CoreDataの多くのリレーションシップに対して複合クエリを実行する方法
私は2つのエンティティを持っています:1.いくつかのデータの "キャプチャ"を表し、それは2.アイデンティティタグと多くの関係を持っています。
私は基本的に "キャプチャ"の特定のセットから "アイデンティティ"タグのセットを取得しようとしています。つまり、Int 'y'というIDでタグ付けされたキャプチャの名前「X」のすべての一意のIDを知りたいとします。
let captures: [Capture]
let identities = captures.flatmap({ $0.identities }).filter({ $0.id == "y" })
let uniqueIdentitiesOfParticularType: Set<Identity> = Set(identities.flatMap({ $0.name })
すべてのヘルプしてください:迅速で
は、私はこのようにモデル化するのでしょうか?
ありがとうRob!これは正しい軌道に乗った。私は、CoreDataにこれらのオブジェクトを1つのフェッチに伝えるより良い方法があると思ったので、NSPredicatesをすべての作業を行う方法を理解しようとしていたのです。 – Bren
コアデータはデータベースではないことを覚えておいてください。それは目的は任意のレコードクエリではありません。それはオブジェクト永続化エンジンです。一貫したオブジェクトグラフを維持するのが目的です。データセットがすべてメモリに収まるわけではないため、「フェッチ」は実装の詳細です。コアデータの主力は、「行のクエリ」ではなく、複雑な関係システムのナビゲートを支援することです。多くの固定された関係がない多くの独立した記録がある場合、私はしばしばデータベースをより良いツールと見なします。 –
私はこの小さなプロジェクトのために私が働いている私は、JSONにローカルに格納されているデータセットを持っています。 CoreDataは、このデータを適切なオブジェクトにシリアライズし、相互に関連する方法を維持し、それらとやり取りするための素晴らしい方法を提供しました。私はこのソリューションを検討するにあたって、フェッチによって返されたすべてのオブジェクトを見ているより良い方法があると思っていたのではないかと思っていました。 – Bren