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。

posted on 2016-02-14 20:45  进化的蜗牛  阅读(2166)  评论(0编辑  收藏  举报