10

伙计们,我正在尝试执行以下操作。我有一个名为“specialLevels”的数组(NSArray),该数组如下所示:

specialLevels = @[@2, @4, @6, @9];

这应该是一个int数组。我还得到了 int 'currentLevel' (基本 int 没有对象)。

我想检查 currentLevel 是否在 specialLevels 数组中。我知道存在“containsObject”方法,但这在我的情况下不起作用。

在这种情况下,你们会建议做什么?

所以我想到了这个,但感觉有点奇怪 imo:

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

2 回答 2

21

你也可以写:

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

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

于 2013-10-09T19:16:12.250 回答
14

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

您可以在此处阅读有关Objective-C 文字的信息

于 2013-10-09T19:19:17.297 回答