在Swift中将可选字符串转换为整数

12

我在将可选字符串转换为整数时遇到了问题。

   println("str_VAR = \(str_VAR)")      
   println(str_VAR.toInt())

结果是

   str_VAR = Optional(100)
   nil

我希望你能把它做成

   str_VAR = Optional(100)
   100
3个回答

16

在撰写本文时,本页面上的其他答案使用了旧的Swift语法。这是一个更新。

将可选字符串转换为整数:String? -> Int

let optionalString: String? = "100"
if let string = optionalString, let myInt = Int(string) {
     print("Int : \(myInt)")
}

这将把字符串"100"转换为整数100并打印输出。如果optionalStringnilhello3.5,则不会打印任何内容。

还可以考虑使用guard语句


1
你知道为什么这个结构会返回nil吗?let optionalString: String? = "100" , let newVal = Int(optionalString!) - bibscy

6
你可以用以下方式展开它:
if let yourStr = str_VAR?.toInt() {
    println("str_VAR = \(yourStr)")  //"str_VAR = 100" 
    println(yourStr)                 //"100"

}

请参考这里,了解更多信息。
何时使用“if let”?
“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,因此可以直接使用其值。


我错过了什么?Swift 告诉我“String 类型的值没有 toint 成员”。 - TahoeWolverine
@TahoeWolverine toInt() 不再可用。 - Dharmesh Kheni

1

试试这个:

if let i = str_VAR?.toInt() {
    println("\(i)")
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接