使用cotainsObject的方法场景很常见 例如:判断一个元素(对象)是否存在数组中
但是使用的时候 需要注意:constainsObject内部在比较对象是否相等时采取的是地址比较。
如果两个不同的地址而内容完全相等的对象采取containsObject默认比较返回结果是NO
针对这种情况,一般我们需要在自定义的类中重载NSObject的-(BOOL)isEqual:(id)object方法
- (BOOL)isEqual:(id)object {
if (self == object) {
return YES;
}
if (![object isKindOfClass:[TekuaEntity calss]]) {
return NO;
}
TekuaEntity *tekubaEntity = (TekubaEntity *)object;
if (tekubaEntity.id_ == self.id_) {
return YES;
} else {
return NO;
}
}
本文介绍在 Objective-C 中如何重载 containsObject 方法来实现基于对象属性而非内存地址的比较。通过重载 isEqual 方法,可以使得 NSArray 或 NSMutableArray 的 containsObject 能够正确判断具有相同属性值的不同对象实例。


被折叠的 条评论
为什么被折叠?



