【发布时间】:2020-03-12 19:39:49
【问题描述】:
NSMutableArraycontainsObject即使地址和数据不同也会返回true。
我已经看过这个帖子NSMutableArray containsObject returns true, but it shouldnt ,但我仍然没有找到我的解决方案:
下面是我的场景:
NSMutableArray *destClasses = [NSMutableArray array];
id sourceClasses = [dict objectForKey:@"Classes"];
if ([sourceClasses isKindOfClass:[NSArray class]]) {
for (NSDictionary *class in sourceClasses) {
MyClass *a = [[MyClass alloc] init];
[a arrangeClassWithDictionary:classDict]; //this methods assigns value to a from classDict
if (![destClasses containsObject:a]) {
[destClasses addObject:a];
}
}
}
在第一次迭代中destClasses 添加了一个MyClass 对象,在第二次迭代中[destClasses containsObject:a] 返回true,即使a 分配了不同的地址和不同的值。
我在这里做错了什么。请帮忙。
【问题讨论】:
-
来自
containsObject:“如果 isEqual:返回 YES,则认为对象相等。”您是否覆盖了isEqual:?您是否有重现该问题的工作示例?如果它存在,如何使用indexOfObject:,检索对象,并将它们与isEqual:进行比较? -
我没有压倒一切!!我在字典中有 2 个值,但是当我在数组中附加对象时,它只会添加最后一个,字典中的所有值都相似,只需要一个属性。
-
@PrabaSaran - 编辑您的问题并包含足够的代码来演示......请参阅minimal reproducible example。
标签: ios objective-c nsmutablearray