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

我想确认使用相同值的新NSNumbers查询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
}

最佳答案

你在做什么很好。为什么不呢?
containsObject:方法实际上遍历数组,并在传入要检查的对象的每个对象上调用isEqual:方法。

顺便说一句-使用NSNumber并没有什么特别的。任何对象类型的数组都是相同的。只要对象的类具有有效的isEqual:方法,它将起作用。

关于iOS NSMutableArray如何检查它是否包含NSNumber对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20549487/

10-13 05:45