0

2つのテーブルがoldaddressありnewaddress、共通のフィールドがありますpersonIDpersonIDそこからnewaddressも存在する詳細を取得する必要がoldaddressあります。コアデータでエンティティと述語を設定するにはどうすればよいですか?

同等のクエリは

select a.personID  from new address a, oldaddress b where a.personID=b.personID
4

1 に答える 1

3

コア データの本質を把握していません。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"]
于 2013-03-08T12:48:16.637 に答える