繁体   English   中英

如何在Swift中将Any转换为Int

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM