【问题标题】: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
}

【问题讨论】:

  • 你的问题是什么?你不喜欢这行代码?

标签: ios objective-c arrays int


【解决方案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

【讨论】:

  • 感谢您的解释! :)
猜你喜欢
  • 2012-08-14
  • 2020-03-06
  • 1970-01-01
  • 2016-05-28
  • 2020-03-20
  • 2014-03-25
  • 1970-01-01
  • 2020-03-05
  • 2011-06-26
相关资源
最近更新 更多