Swift 带字符串的列表中的Int是AnyObject吗?

Swift 带字符串的列表中的Int是AnyObject吗?,swift,swift-playground,Swift,Swift Playground,这个代码有什么问题 如何将列表指定为字符串和数字 我收到一个错误'AnyObject不能转换为'Int' var stringNum = ["name", 2] var number:Int = stringNum[1] 数组被推断为[AnyObject]类型,在swift中,必须始终显式地使用变量 您需要测试该值是否可以转换为Int: if let number : Int = stringNum[1] as? Int { // use number as Int } 如果无法转

这个代码有什么问题

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

我收到一个错误'AnyObject不能转换为'Int'

var stringNum = ["name", 2]

var number:Int = stringNum[1]

数组被推断为
[AnyObject]
类型,在swift中,必须始终显式地使用变量

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

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

如果无法转换值,
as?
运算符将返回
nil
,并且
if
块将不运行,否则,它将返回转换为Int的值,并运行
if
块,将
number
设置为Int值

如果您确信数组中的元素按预期键入,则只需

 var number:Int = stringNum[1] as Int

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

OP代码中的数组包含字符串和Int作为内容。他知道元素
[1]
Int
-他只是无法让编译器同意他的观点。[这个答案不值得你投反对票。]如果他只需要两个常量,他就不会使用数组。另外,另一个答案是确认类型的一个很好的例子。比如当他有一个子数组
[…[“stringy”inty]…]时,他没有解析JSON或属性文件。
谢谢!这就是我要找的。var number=stringNum[1],因为IntSwift试图通过提供类型安全性来帮助您。通常,不需要具有包含多种类型对象的数组。