我有一個核心數據結構如下:核心數據過濾
Business <-------->> Employee <-------->> Address
每個企業都有多個員工和每個員工可以有多個地址。
從Business對象中,我希望能夠獲得指定特定條件的所有Address
對象中的NSArray
或NSSet
。例如。所有的街道名稱都必須是唯一的。
我知道我可以覆蓋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
值(或其他一些條件的集合)。
問題是沒有獨特的解決方案。如果同一城市有多個地址,應選擇哪個地址對象?下面的解決方案選擇「第一個」,這是隨機的,因爲數組中的對象沒有明確定義的順序。 – 2013-04-09 05:12:03
的確如此。我用這個簡單的例子。我有一個基於其他一些屬性生成的自定義屬性。在我的情況下,第一個是好的,但我用它作爲基於屬性過濾唯一對象的簡單示例。 – danielbeard 2013-04-09 05:18:47