用自定义对象过滤NSArray
这个问题在这里已经有了答案:
一些沿着这些线应该做的伎俩:
NSMutableSet * types = [NSMutableSet setWithCapacity:10];
NSPredicate * filterPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
if ([types containsObject:[evaluatedObject type]]) {
return NO;
}
else {
[types addObject:[evaluatedObject type]];
return YES
}
}];
NSArray * filteredArray = [detailedError filteredArrayUsingPredicate:filterPredicate];
上面的代码保留了每种类型的第一个对象并删除了其他对象。
我会通过重写hash和isEqual来做到这一点:
- (BOOL) isEqual:(id)object
{
if([object isKindOfClass: [self class]])
return [_type isEqualToString: object];
return NO;
}
- (NSInteger) hash
{
return [_type hash];
}
然后从数组中创建的集合中获取不同的对象数组:
NSArray* filteredArray= [NSSet setWithArray: array].allObjects;
链接地址: http://www.djcxy.com/p/70817.html
上一篇: Filtering an NSArray with custom objects
下一篇: Sort NSMutableArray with custom objects by another NSMutableArray