次のようなコアデータ構造があります。
Business <-------->> Employee <-------->> Address
各企業には複数の従業員がおり、各従業員は複数の住所を持つことができます。
Business オブジェクトから、特定の条件を指定するすべてのオブジェクトのNSArray
orを取得できるようにしたいと考えています。たとえば、通りの名前はすべて一意である必要があります。NSSet
Address
をオーバーライドできることはわかっていますが、isEqual:
これは意図しない結果になると思います。そうでなければ、 の使用を検討してvalueForKeyPath:@"@distinctUnionOfObjects"
いますが、条件を渡すことができないと思います。
ここに私がこれまでに持っているいくつかのコードがあります:
NSMutableArray *addressArray = [NSMutableArray array];
NSArray *employees = [Employee sortedArray];
//loop through employees
for (Employee *employee in employees) {
for (Address *address in employee.addresses) {
[addressArray addObject:address];
}
}
//filter out duplicates
addressArray = [addressArray valueForKeyPath:@"@distinctUnionOfObjects.city"];
このコードは一意の都市のリストを提供しますが、一意の値 (またはその他の条件)Address
を持つオブジェクトを含むコレクションが必要です。city