簡體   English   中英

如何將文本字段中的字符串轉換為 Swift 中的 Int?

[英]How can I convert a string in a textfield to an Int in Swift?

我嘗試了很長時間將文本轉換為Int但它不起作用。 我試過這樣:

AnzahlString是一個文本字段)

var AnzahlAInt = 0

if let AnzahlAString = AnzahlString.text {
    let AnzahlAInt = Int(AnzahlAString)
}

但后來我總是得到錯誤:

可選類型“Int?”的值必須解包為“Int”類型的值

然后我加了一個! Int(AnzahlAString)! 所以我沒有收到錯誤,但是現在當我按下按鈕時,應用程序崩潰了。 這是可以預見的,但是我現在怎么能把它改成沒有!Int呢? ?

生成的Int是可選的原因是解析可能成功也可能不成功。 例如,如果您嘗試將字符串 "Fluffy Bunnies" 解析為Int ,則無法返回合理的Int ,因此解析該字符串的結果將為nil

此外,如果您通過使用強制解析器! ,您是在告訴 Swift 您確定您傳遞的字符串將始終生成有效的Int ,如果不是,則應用程序崩潰。

您需要處理解析結果為nil的情況。 例如:

if let AnzahlAIntResult = Int(AnzahlAString) {
    // We only get here if the parse was successful and we have an Int.
    // AnzahlAIntResult is now an Int, so it can be assigned to AnzahlAInt.
    AnzahlAInt = AnzahlAIntResult
}

乍一看,您需要檢查兩件事:

  • 是否存在AnzahlString.text ,並且
  • 它是否代表一個Int

第一次檢查實際上是不必要的,因為.text永遠不會返回 nil,即使它被標記為可選。 這意味着您可以安全地強制打開它。

使用??可以輕松完成第二次檢查。 操作員:

let AnzahlAInt = Int(AnzahlString.text!) ?? 0

PS,作為文體提示:Swift 中的變量名稱通常以小寫字母開頭,以大寫字母開頭的名稱用於類型。

PPS:你的代碼寫成影子AnzahlAInt - 你的 var 的值永遠不會改變。

到目前為止,你做得很好,但錯過了一件事。

此行嘗試將 String 轉換為 Int。 但是,這可能會失敗,因為您的 String 可能是這樣的"dfhuse"

let AnzahlAInt = Int(AnzahlAString)

這就是Int(AnzahlAString)的結果是 Optional ( Int? ) 的原因。 要將其用作真正的Int ,您必須將其解包

第一個解決方案是! ,但是,每次這確實失敗時,您的應用程序都會崩潰。 這樣做不是一個好主意。

最好的解決方案是可選綁定,因為您已經習慣於獲取文本字段的文本。

if let AnzahlAString = AnzahlString.text {

    if let safeInt = Int(AnzahlAString) {
        // You can use safeInt as a real Int
    } else {
        print("Converting your String to an Int failed badly!")
    }
}

希望這對您有所幫助。 如果有不清楚的地方,請隨時再次詢問。

對於展開,您也可以像這樣使用保護

簡單易行

guard let AnzahlAInt = Int(AnzahlString.text!) else {
            return
        }

        print(AnzahlAInt)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM