Swift 带字符串的列表中的Int是AnyObject吗?
这个代码有什么问题 如何将列表指定为字符串和数字 我收到一个错误'AnyObject不能转换为'Int'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 } 如果无法转
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试图通过提供类型安全性来帮助您。通常,不需要具有包含多种类型对象的数组。