首先要明白:containsobject比较的是对象的内存地址而不是对象内容,所以,如果我们要比较自定义的对象内容是否相同时,需要做一些特别的处理
代码如下:
- (BOOL)isEqualToPerson:(Person *)person {
if (!person) {
return NO;
}
BOOL bIsEqualNames = (!self.name && !person.name) || [self.name isEqualToString:person.name];
BOOL bIsEqualAges = self.age == person.age;
return bIsEqualNames && bIsEqualAges;
}
#pragma mark - 重载isEqual方法
- (BOOL)isEqual:(id)object {
if (self == object) {
return YES;
}
if (![object isKindOfClass:[Person class]]) {
return NO;
}
return [self isEqualToPerson:(Person *)object];
}
这样在用数组的containObject判断时就可以了