[英]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.