我已经看到一些关于使用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对象的smallArray和bigArray的交集,我怀疑我是否可以使用intersetSet:选择器方法?如果没有,我不确定是否应该向MyObject类添加任何方法,以便set知道如何比较对象?
发布于 2010-10-19 12:19:20
您需要在MyObject上实现isEqual: (以及hash),以便如果两个对象“匹配”,则返回YES。
从文档中Here's一个又快又脏的示例。也可以查看this SO question。
https://stackoverflow.com/questions/3965259
复制相似问题