此代码有什么问题?
如何将列表指定为字符串和数字?
我收到错误' AnyObject无法转换为' Int'
var stringNum = ["name", 2]
var number:Int = stringNum[1]
答案 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
的工作原理。但是,如果您不确定数组元素中的类型一致性,那么您需要在分配之前确认类型。