【发布时间】:2012-07-10 01:44:44
【问题描述】:
我有两个要比较的 NSArray — 在 NSLog 输出中它们看起来相同,但不知何故它们并不相等。如果我将 NSArray 转换为 NSString 我会得到相同的结果。将它们与自己进行比较将是平等的。如何确定为什么一和二不相等?谢谢。
- (void)confused:(NSArray *)two {
NSArray *one = [NSArray arrayWithObjects:@"16777223", @"7", nil];
NSArray *two = [[NSBundle bundleWithPath:@"/path/to/bundle"] executableArchitectures];
// NSArray "two" shows as 16277223, 7 in NSLog
if ([two firstObjectCommonWithArray:(NSArray *)one])
{
NSLog(@"- it's equal %@ %@", one, two);
// if array one matches array two then this will output
}
else {
NSLog(@"- it's NOT equal %@ %@", one, two);
}
return;
}
这是控制台的输出:
myApp (
16777223,
7
)
myApp (
16777223,
7
)
myApp - it's NOT equal (
16777223,
7
)(
16777223,
7
)
【问题讨论】:
-
可否包括
two的创建? -
和我的另一个问题
'[[NSBundle bundleWithPath:@"/path/to/bundle"] executableArchitectures]'直接相关;所以上面例子中 NSArray one 的值是@"16777223",@"7",nil -
哦。该方法返回
NSNumber的数组,而不是NSString。那是你的问题。 -
是的,如果对象类型不同,即使它们产生相同的
description转储,它们也不太可能进行相同的比较。 -
好的,我已经更新了如何创建 NSArray 2 的问题。所以问题真的是如何表示 NSArray 1 以使其等于 2?
标签: objective-c comparison nsarray