【发布时间】:2015-07-29 08:03:08
【问题描述】:
在将可选字符串转换为 int 时遇到问题。
println("str_VAR = \(str_VAR)")
println(str_VAR.toInt())
结果是
str_VAR = Optional(100)
nil
我希望它是
str_VAR = Optional(100)
100
【问题讨论】:
在将可选字符串转换为 int 时遇到问题。
println("str_VAR = \(str_VAR)")
println(str_VAR.toInt())
结果是
str_VAR = Optional(100)
nil
我希望它是
str_VAR = Optional(100)
100
【问题讨论】:
在撰写本文时,此页面上的其他答案使用旧的 Swift 语法。这是一个更新。
String? -> Int
let optionalString: String? = "100"
if let string = optionalString, let myInt = Int(string) {
print("Int : \(myInt)")
}
这会将字符串"100" 转换为整数100 并打印输出。如果optionalString 是nil、hello 或3.5,则不会打印任何内容。
还可以考虑使用guard statement。
【讨论】:
你可以这样打开它:
if let yourStr = str_VAR?.toInt() {
println("str_VAR = \(yourStr)") //"str_VAR = 100"
println(yourStr) //"100"
}
更多信息请参考THIS。
何时使用“如果让”?
if let 是 Swift 中的一个特殊结构,它允许您检查 Optional 是否包含一个值,并在它存在的情况下 - 对未包装的值执行一些操作。让我们看看:
if let yourStr = str_VAR?.toInt() {
println("str_VAR = \(yourStr)")
println(yourStr)
}else {
//show an alert for something else
}
if let 结构解开str_VAR?.toInt()(即检查是否存储了一个值并获取该值)并将其值存储在yourStr 常量中。您可以在 if 的第一个分支中使用 yourStr。注意里面 if 你不需要使用 ?或者 !了。重要的是要意识到yourStr 实际上是Int 类型,它不是可选类型,因此您可以直接使用它的值。
【讨论】:
toInt() 不再可用。
试试这个:
if let i = str_VAR?.toInt() {
println("\(i)")
}
【讨论】: