String中的Int是AnyObject吗?

时间:2014-06-13 23:21:47

标签: swift swift-playground

此代码有什么问题?

如何将列表指定为字符串和数字?

我收到错误' AnyObject无法转换为' Int'

var stringNum = ["name", 2]

var number:Int = stringNum[1]

2 个答案:

答案 0 :(得分:2)

数组推断为[AnyObject]类型,在swift中,您必须始终明确downcast您的变量。

您需要测试该值是否可以转换为Int:

if let number : Int = stringNum[1] as? Int {
    // use number as Int
}

as?运算符将返回nil如果无法转换该值且不会运行if块,否则它将返回转换为Int的值并运行{{ 1}}阻止if设置为Int值

答案 1 :(得分:1)

如果您确信数组中的元素按预期输入,那么只需

 var number:Int = stringNum[1] as Int

的工作原理。但是,如果您不确定数组元素中的类型一致性,那么您需要在分配之前确认类型。