如何在Swift中将Any转换为Int

时间:2014-06-06 23:20:56

标签: swift

声明我

时出错
var users =  Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])

如何获取int值?

5 个答案:

答案 0 :(得分:21)

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

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

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

如果失败,结果将为nil

答案 1 :(得分:10)

斯威夫特4回答:

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