在声明 i 时,我遇到了一个错误。
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
如何获取整数值?
在声明 i 时,我遇到了一个错误。
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
如何获取整数值?
var i = users[0]["Age"] as Int
var i = users[0]["Age"] as? Int
如GoZoner所指出,如果你不确定向下转换会成功,请使用上述代码。如果失败,则结果将为nil
。
Swift 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
但如果你不确定并且希望在它不是Int
时得到一个nil
值,那么使用:
var i = users[0]["Age"] as? Int
as Int
和as Int?
,而不是引入as?
。 - GoZoneras?
相当于-isKindOfClass:
,但移动?
可能更合理。 - Ephemeraprint("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会导致nil
c)转换为String会导致nil(打印行永远不会执行)
编辑
答案是使用NSNumber
let num = subvalue["multi"] as? NSNumber
然后我们可以将数字转换为整数
let myint = num.intValue
NSDictionary
而不是 Dictionary
?在 Swift 3 中,as? Int
应该可以正常工作。 - John MontgomeryNSDictionary
的值是 AnyObject
,不能转换为 Int
,因为它不是对象类型。使用 Swift 字典代替即可解决问题。 - John Montgomeryif let id = json["productID"] as? String {
self.productID = Int32(id, radix: 10)!
}
这对我有用。 json["productID"]
是 Any
类型。
如果可以转换为字符串,则将其转换为整数。