如何在Swift中将任意字符转换为Int
我在声明I时出错如何在Swift中将任意字符转换为Int,swift,Swift,我在声明I时出错 var users = Array<Dictionary<String,Any>>() users.append(["Name":"user1","Age":20]) var i:Int = Int(users[0]["Age"]) var users=Array() users.append([“Name”:“user1”,“Age”:20]) 变量i:Int=Int(用户[0][“年龄”]) 如何获取int值?var i=users[0][“A
var users = Array<Dictionary<String,Any>>()
users.append(["Name":"user1","Age":20])
var i:Int = Int(users[0]["Age"])
var users=Array()
users.append([“Name”:“user1”,“Age”:20])
变量i:Int=Int(用户[0][“年龄”])
如何获取int值?var i=users[0][“Age”]作为int
正如GoZoner所指出的,如果你不知道沮丧会成功,请使用:
var i=users[0][“Age”]as?Int
如果失败,结果将为nil
,如果您确定结果为Int
,则使用:
var i = users[0]["Age"] as! Int
var i = users[0]["Age"] as? Int
但是如果您不确定并且想要一个nil
值,如果它不是Int
,则使用:
var i = users[0]["Age"] as! Int
var i = users[0]["Age"] as? Int
“如果需要,请使用类型转换运算符(as?)的可选形式
不确定下行是否会成功。这种形式的运算符将
始终返回可选值,如果
无法向下播放。这使您能够检查是否成功播放
沮丧。”
摘自:苹果公司《Swift编程语言》。iBooks。
这可能在以前起过作用,但它不是Swift 3的答案。只是澄清一下,我没有Swift 3的答案,下面是我使用上述答案进行的测试,显然它不起作用
我的数据来自一本词典
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) 转换为字符串将导致nil(打印行永远不会执行)
编辑
答案是使用NSNumber
设num=subvalue[“multi”]为?NSNumber
然后我们可以将数字转换为整数
让myint=num.intValue回答:
if let str = users[0]["Age"] as? String, let i = Int(str) {
// do what you want with i
}
这对我有用json[“productID”]
的类型为Any
。
如果可以将其转换为字符串,则将其转换为整数 值得注意的是,第一个示例中的i
类型是Int
,但第二个示例中的i
类型将是Int?
。我认为苹果公司可能会把看作Int
和看作Int?
而不是把看作
这实际上是一个很好的观点。我认为as?
相当于-iskindof类:
,但是移动?
是有意义的。可能问题是您使用的是NSDictionary
而不是Dictionary
<代码>作为?Int
在Swift 3中应该可以正常工作。事实上,是的,这就是问题所在NSDictionary
值是AnyObject
,不能强制转换为Int
,因为它不是对象类型。改用Swift字典,它应该会工作。有时它会返回nil。我使用此方法从WKBridge
解析内容,我遇到了一个问题,即展开内容,这看起来像是可选的(3)。我试着把它演成?那是什么?字符串-两者都失败。然后尝试展开并使用导致异常的类型,这表明Swift决定将Int8用于该值。因此,人们认为Int8不能转换成Int。最后检查了if/else流中的所有int类型。