【发布时间】:2010-11-03 17:39:12
【问题描述】:
我正在尝试比较两个数组,比如数组 a 是一系列数组,如下所示:
((1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3), (3,1), (3,2), (3,3))
数组 b 是一系列数组,如下所示:
((1,1), (1,2), (1,3), (1,4), (2,1), (2,2), (2,3))
如何检查数组 a 中的项目是否不在数组 b 中
for(NSString* itemFromA in a) {
if ([b containsObject: itemFromA] == FALSE) {
NSLog(@"ok");
break;
}
}
这似乎对我不起作用。
【问题讨论】:
-
请注意正确格式化您的问题(格式化您的代码以便阅读)。此外,不清楚您在问什么,因为您的描述与您的代码不太匹配。您的 for 循环使它看起来像您的数组 A 和 B 包含 NSString 实例,但您的描述表明每个都是未知的数组数组(字符串?数字?包含 NSRange 结构的 NSValue?)。请说明确切的结构。
-
你不应该永远比较false。始终使用!
![b containsObject:itemFromA]。在与 false 比较的情况下,它没有区别。你不允许做的事情,是比较true。顺便说一句:在 Objective-C 中,使用 YES 和 NO 而不是 true 和 false。 -
@Georg:虽然我同意你对 BOOL 的 YES/NO 的看法,但
if ([b containsObject:itemFromA] == NO)是完全有效的。 -containsObject: 返回一个 BOOL,所以就像说 BOOL isThere = YES; if (isThere == NO)... 与 if (!isThere) 相同。 -
数组中有哪些对象?自定义对象?
-
简单地说,在 Pruitlgoe 阐明确切的数据结构之前,这个问题无法得到任何肯定的回答。
标签: objective-c cocoa nsmutablearray