Swift:数组变量存储属性不可变

时间:2014-06-11 17:51:46

标签: ios swift

在我的应用程序中,我将数组存储属性声明为变量。当我想检查它是否包含和对象时,Xcode不会自动完成。如果我手动完成它会显示一个错误,说它不包含此方法。我认为虽然它被声明为var,但数组并不可变。这是我的代码:

class someClass{
   var someArray = AnyObject[]()

   func someFunction{
     if someArray.containsObject("object") <--- error here
   }
}

2 个答案:

答案 0 :(得分:2)

您的代码包含许多语法错误:

  • class someClass
  • 之后不应该是括号
  • func someFunction
  • 之后应该有括号

但您注意到的错误是containsObject上没有方法Array。你可以这样做:

contains(someArray, "object")

或者您可以将其投放到NSArray

(someArray as NSArray).containsObject("object")

修改

正如Rob Napier正确指出的那样,第一个选项(当然)只适用于String[],而不是AnyObject[]。斯威夫特真的不鼓励混合阵列。

答案 1 :(得分:1)

Array没有方法containsObject。这是NSArray的方法。

您可以对filter函数使用find()方法。

您也可以将Array转换为NSArray,然后拨打containsObject