声明我
时出错var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
如何获取int值?
答案 0 :(得分:21)
var i = users[0]["Age"] as Int
正如GoZoner所指出的那样,如果你不知道这个垮掉的人会成功,请使用:
var i = users[0]["Age"] as? Int
如果失败,结果将为nil
答案 1 :(得分:10)
if let str = users[0]["Age"] as? String, let i = Int(str) {
// do what you want with i
}
答案 2 :(得分:8)
如果您确定结果为Int
,请使用:
var i = users[0]["Age"] as! Int
但如果您不确定并且想要nil
值,如果它不是Int
,请使用:
var i = users[0]["Age"] as? Int
“使用类型转换运算符的可选形式(如?) 不确定垂头丧气是否会成功。这种形式的运营商将 总是返回一个可选值,如果是,则值为nil 贬低是不可能的。这使您可以检查是否成功 垂头丧气“。
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
答案 3 :(得分:0)
if let id = json["productID"] as? String {
self.productID = Int32(id, radix: 10)!
}
这对我有用。 json["productID"]
的类型为Any
。
如果可以将其强制转换为字符串,则将其转换为Integer。
答案 4 :(得分:-1)
这可能以前有用,但它不是Swift 3的答案。只是为了澄清,我没有得到Swift 3的答案,下面是我使用上述答案的测试,并且清楚它没有用。
我的数据来自NSDictionary
print("subvalue[multi] = \(subvalue["multi"]!)")
print("as Int = \(subvalue["multi"]! as? Int)")
if let multiString = subvalue["multi"] as? String {
print("as String = \(multiString)")
print("as Int = \(Int(multiString)!)")
}
生成的输出是:
subvalue[multi] = 1
as Int = nil
只是拼出来:
a)原始值是否为Any?价值是:1
b)施放到Int的结果为零
c)Casting to String导致nil(打印行永不执行)
修改强>
答案是使用NSNumber
让num = subvalue [&#34; multi&#34;]为?的NSNumber
然后我们可以将数字转换为整数
让myint = num.intValue