Objective-C如何检查包含整数的数组是否包含某个整数?

12

各位,我正在尝试做如下事情。我有一个叫做'specialLevels'的数组(NSArray),该数组看起来像这样:

specialLevels = @[@2, @4, @6, @9];
这应该是一个整数数组。 我还有一个名为“currentLevel”的整数(基本int而非对象)。
我想检查当前级别是否在specialLevels数组中。 我知道存在“containsObject”方法,但这在我的情况下不起作用。
在这种情况下,你们会推荐做什么?
所以我想到了这个,但我觉得有点奇怪。
if ([specialLevels containsObject:[NSNumber numberWithInt:currentLevel]]) {
 // other code in here
}

8
你有什么问题?你不喜欢这行代码吗? - Wain
2个回答

22

您也可以选择这样写:

if ([specialLevels containsObject:@(currentLevel)]) {
    // other code in here
}

这更符合您其他代码的风格。


太棒了,非常感谢!但这个有效吗?有关于这个的文档吗? - ronnyrr
3
你在开始使用@2之前是否理解它的作用?@BrianWalker的回答是一个很好的概述。 - Wain
我之前不知道,但现在明白了,谢谢你的解释! - ronnyrr

15

specialLevels不是一个整数数组。它是NSNumber对象的数组。@2、@4、@6、@8分别创建了一个等同于调用[[NSNumber numberWithInt:value]的NSNumber实例。当您调用containsObject时,还需要传递一个NSNumber对象,以便containsObject可以使用isEqual:匹配值。

您可以在这里阅读有关Objective-C字面量的信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接