我正在编写一些代码,这些代码将使用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/