私が人々のグループを持っているとしましょう。各人はコンパニオンを持つことができます (ほとんどの場合、コンパニオンがいます)。この交際は、他の人々の友情を担当しています。人は、1 つの交際のみによって友情を深めることができます。
例:私たちは持っていますJohn, Tom, Mary, Paul, Peter, Frank and Wil
ピーターとトムの友情 ポールとジョンなど:
Peter - Tom Paul - Mary Wil - John Frank -
|_Paul |_Wil
|_John |_Peter
|_Tom
Mary
そしてFrank
、誰とも友好的ではありません。Frank
仲間はいません。
次の関係を設定しました。
Person
Relationship Destination Inverse Type Delete Rule
companion Person companion To One Nullify
friendshippedBy Person friendships To Many Nullify Count 2 Maximum
friendships Person friendshippedBy To Many Nullify
誰がピーターの仲間で、誰がピーターと友情を築いているか、誰がピーターと友情を結んでいるか、誰と友情を結んでいないか、誰とも友情を結んでいないか、誰とも友情を結んでいないかを見つけることができます。これで問題ありません。必要なものはすべて揃っていますが、データの整合性を自分で管理する必要があることを除けば、ピーターがトムの仲間である限り、ピーターとトムの友情は同じであるということを確認する必要があります (friendships
関係両方とも同じである必要があります)。これらの関係を次のように設定する必要があります。
peter.friendships = [NSSet setWithArray:@[paul, john]];
tom.friendships = peter.friendships; // need to preserve it as long as they're companions
friendships
交友関係にある人の関係が変わるたびに最後の行を書く必要は避けたい. カテゴリに便利なメソッドを記述できると考えています (.friendships =
直接ではなく、そのメソッドを呼び出すかsetFriendships
、オーバーライドする必要があることを確認する必要があります)。この関係自体。
Core Data にこの関係を自動的に保持させる方法はありますか?