我有一个核心数据结构如下:核心数据过滤
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