将可选字符串转换为int时遇到麻烦。
println("str_VAR = \(str_VAR)")
println(str_VAR.toInt())
结果是
str_VAR = Optional(100)
nil
我希望它是
str_VAR = Optional(100)
100
答案 0 :(得分:11)
在撰写本文时,此页面上的其他答案使用了旧的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。
答案 1 :(得分:6)
你可以这样解开:
if let yourStr = str_VAR?.toInt() {
println("str_VAR = \(yourStr)") //"str_VAR = 100"
println(yourStr) //"100"
}
有关详细信息,请参阅THIS。
何时使用“if let”?
if let
是Swift中的一个特殊结构,它允许您检查一个Optional是否包含一个值,如果它存在,则使用unwrapped值执行某些操作。我们来看看:
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
。请注意,如果您不需要使用内部?要么 !了。重要的是要意识到yourStr
实际上是Int
类型,它不是可选类型,因此您可以直接使用其值。
答案 2 :(得分:0)
试试这个:
if let i = str_VAR?.toInt() {
println("\(i)")
}