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

Ale*_*one 9 search objective-c nsmutablearray nsarray ios

我正在编写一些代码,这些代码将使用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
}
Run Code Online (Sandbox Code Playgroud)

rma*_*ddy 16

你做的很好.为什么不呢?

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

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