2つのテーブルがoldaddress
ありnewaddress
、共通のフィールドがありますpersonID
。personID
そこからnewaddress
も存在する詳細を取得する必要がoldaddress
あります。コアデータでエンティティと述語を設定するにはどうすればよいですか?
同等のクエリは
select a.personID from new address a, oldaddress b where a.personID=b.personID
2つのテーブルがoldaddress
ありnewaddress
、共通のフィールドがありますpersonID
。personID
そこからnewaddress
も存在する詳細を取得する必要がoldaddress
あります。コアデータでエンティティと述語を設定するにはどうすればよいですか?
同等のクエリは
select a.personID from new address a, oldaddress b where a.personID=b.personID
コア データの本質を把握していません。Martin R が指摘したように、これはオブジェクト グラフであり、データベースではありません。
あなたが説明するのは、いわゆるリレーションシップを介して Core Data でモデル化されたテーブル結合操作であり、 などの外部キーの必要性を排除しますpersonID
。
また、同じ種類のオブジェクトを表す異なる ID を作成することも悪い習慣です。
したがって、モデルは次のようになります。
Address <<------>> User
のAddress
ようなブール値のプロパティを持つ必要がありますisOld
。
をフェッチすると、述語は非常に単純になりUser
ます。
[NSPredicate predicateWithFormat:@"addresses.@count = 2"];
あるいは、必要に応じて から までの 2 つの一対多の関係を持つこともできUser
ますAddress
。
User.oldAddress <<-----------> Address
User.newAddress <<-----------> Address
このような述語で
[NSPredicate predicateWithFormat:@"oldAddress != NULL && newAddress != NULL"]