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 数组进行排序 - 优化