NSArray的containsObject的使用时注意的问题
使用containsObject方法的场景很多,列如:判断某一对象(元素)是否存在数组中,但使用的时候应该注意:containsObject内部在比较对象是否相等时采取的是地址比较,如果两个不同的地址但内容完全相等的对象采取containsObject进行比较时默认返回NO,针对这一情况,一般我们需要在自定义的类中重载NSObject的- (BOOL)isEqual:(id)object方法。因为containsObject方法比较对象时会调用对象的- (BOOL)isEqual:(id)object方法。
一般的写法:
- (BOOL)isEqual:(id)object {
if (object == self) {
return YES;
}
if (![object isKindOfClass:[NewsEntity class]]) {
return NO;
}
NewsEntity *entity = (NewsEntity *)object;
if ([entity.title isEqualToString:self.title]) {
return YES;
}
else {
return NO;
}
}
这样就不管比较的对象地址是否相同,只要内容相等就会返回YES。