Objective-C 检查带有 int 的数组是不是包含 int [关闭]

Posted

技术标签:

【中文标题】Objective-C 检查带有 int 的数组是不是包含 int [关闭]【英文标题】:Objective-C checks if array with ints contains int [closed]Objective-C 检查带有 int 的数组是否包含 int [关闭] 【发布时间】:2013-10-17 07:39:20 【问题描述】:

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

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

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

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

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

所以我是这么想的,但我觉得有点奇怪:

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

【问题讨论】:

你的问题是什么?你不喜欢这行代码? 【参考方案1】:

你也可以这样写:

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

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

【讨论】:

太棒了,非常感谢!但这如何有效,有任何关于此的文档吗? 在您开始使用@2 之前,您了解它在做什么吗? @BrianWalker 的回答是一个很好的概述。 不,我没有,但现在我知道了,谢谢你的解释!现在为我清除 :)【参考方案2】:

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

你可以阅读Objective-C literals here。

【讨论】:

感谢您的解释! :)

以上是关于Objective-C 检查带有 int 的数组是不是包含 int [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Objective-C 对 int 数组进行排序 - 优化

带有布尔参数的 Objective-C 方法中奇怪的“选择器修饰”

Objective-C iPhone 定期检查位置

objective-c数组

关于objective-c数组,这些方法你得知道

Objective-c (多输入参数的方法)