iOS如何NSMutableArray检查它是否包含NSNumber对象?

时间:2013-12-12 16:57:06

标签: ios objective-c search nsmutablearray nsarray

我正在编写一些代码,这些代码将使用NSMutableArray并在其中存储int值,包含在NSNumbers中。

我想确认使用具有相同值的新NSNumber查询iOS NSArray或NSMutableArray是合法的,如果我需要显式迭代数组,并检查每个int值是否相等到我想要测试的价值?

这似乎有效:

NSMutableArray* walkableTiles = [NSMutableArray array];    


[walkableTiles addObject:@(1)];
[walkableTiles addObject:@(2)];
[walkableTiles addObject:@(3)];


if([walkableTiles containsObject:@(1)])
{
    DLog(@"contains 1"); //test passes
}
if([walkableTiles containsObject:[NSNumber numberWithFloat:2.0]])
{
    DLog(@"contains 2");//test passes
}
if([walkableTiles containsObject:[NSNumber numberWithInt:3]])
{
    DLog(@"contains 3");//test passes
}

2 个答案:

答案 0 :(得分:16)

你做得很好。为什么不呢?

containsObject:方法实际上遍历数组,并在传入要检查的对象的每个对象上调用isEqual:方法。

顺便说一句 - 这里没有什么特别的使用NSNumber。对于任何对象类型的数组都是一样的。只要对象的类具有有效的isEqual:方法,它就可以工作。

答案 1 :(得分:2)

根据Apple's NSNumber documentation,您应该使用isEqualToNumber

  

isEqualToNumber:返回一个布尔值,指示是否   接收器和给定数量是相等的。    - (BOOL)isEqualToNumber:(NSNumber *)aNumber