[英]How to convert Any to Int in Swift
在宣布我时我收到错误
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
如何获得int值?
var i = users[0]["Age"] as Int
正如GoZoner所指出的那样,如果你不知道这个垮掉的人会成功,请使用:
var i = users[0]["Age"] as? Int
如果失败,结果将nil
斯威夫特4回答:
if let str = users[0]["Age"] as? String, let i = Int(str) {
// do what you want with i
}
如果您确定结果是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
if let id = json["productID"] as? String {
self.productID = Int32(id, radix: 10)!
}
这对我有用。 json["productID"]
的类型为Any
。 如果它可以转换为字符串,则将其转换为Integer。
这可能以前有效,但它不是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 [“multi”]为? 的NSNumber
然后我们可以将数字转换为整数
让myint = num.intValue
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.