如何在Swift中将Any转换为Int

iel*_*ani 24 swift

在宣布我时我收到错误

var users =  Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
Run Code Online (Sandbox Code Playgroud)

如何获得int值?

Jos*_*ark 24

var i = users[0]["Age"] as Int

正如GoZoner所指出的那样,如果你不知道这个垮掉的人会成功,请使用:

var i = users[0]["Age"] as? Int

结果将是nil失败


erg*_*cak 14

斯威夫特4回答:

if let str = users[0]["Age"] as? String, let i = Int(str) {
  // do what you want with i
}
Run Code Online (Sandbox Code Playgroud)


GoZ*_*ner 9

如果您确定结果是Int然后使用:

var i = users[0]["Age"] as! Int
Run Code Online (Sandbox Code Playgroud)

但如果你不确定并想要一个nil值,如果它不是Int那么使用:

var i = users[0]["Age"] as? Int
Run Code Online (Sandbox Code Playgroud)

"当您不确定向下转换是否成功时,请使用类型转换运算符的可选形式(作为?).这种形式的运算符将始终返回一个可选值,如果无法进行向下转换,则该值将为nil.这使您可以检查成功的向下转发."

摘录自:Apple Inc."The Swift Programming Language."iBooks. https://itun.es/us/jEUH0.l

  • 值得注意的是,第一个示例中“i”的类型是“Int”,但第二个示例中“i”的类型将是“Int?”。 (2认同)