我已经通过使用NSSet / NSMutableSet看到了有关过滤器对象的一些问题/答案。这些案例使用简单类型的对象,例如NSString
或int
。以下是用于过滤NSString
个对象的代码示例:
NSSet smallArray = [[NSSet alloc] initWithObjects:@"0", @"1", @"2", nil];
NSArray bigArray = [[NSArray alloc] initWithObjects:@"0", @"1", @"4", @"5", ..., nil];
NSMutableSet *intersection = [NSMutableSet setWithArray:smallArray];
[intersection intersectSet:[NSSet setWithArray:bigArray];
NSArray *result = [NSArray arrayWithSet:intersection];
如果set或array中的对象是Object-C类实例,我不确定它是如何工作的。以下面的课程为例:
@interface MyObject: NSObject {
int id;
NSString *name;
NSString *city;
...
}
我不确定set的intersetSet如何与上面的类型对象一起使用。如果我想通过仅比较id得到MyObject
对象和bigArray的交叉集合,我怀疑我是否可以使用intersetSet:
选择器方法?如果没有,不确定是否应该向MyObject
类添加任何方法,以便set知道如何比较对象?
答案 0 :(得分:4)
您需要在MyObject上实现isEqual:
(以及hash
),这样如果两个对象“匹配”,则返回YES。然后设置的交叉点代码应该自动工作。
Here's来自文档的快速而脏的样本。另请查看this SO question。