399 Stimmen

Umrechnen von String in Int mit Swift

Die Anwendung berechnet im Wesentlichen die Beschleunigung, indem sie Anfangs- und Endgeschwindigkeit sowie Zeit eingibt und dann eine Formel zur Berechnung der Beschleunigung verwendet. Da die Werte in den Textfeldern Zeichenketten sind, kann ich sie nicht in Ganzzahlen konvertieren.

@IBOutlet var txtBox1 : UITextField
@IBOutlet var txtBox2 : UITextField
@IBOutlet var txtBox3 : UITextField
@IBOutlet var lblAnswer : UILabel

@IBAction func btn1(sender : AnyObject) {

    let answer1 = "Die Beschleunigung beträgt"
    var answer2 = txtBox1
    var answer3 = txtBox2
    var answer4 = txtBox3

2voto

fzh Punkte 688

Swift5 float oder int string in int umwandeln:

extension String {
    func convertStringToInt() -> Int {
        return Int(Double(self) ?? 0.0)
    }
}

let doubleStr = "4.2"
// gibt 4 aus
print(doubleStr.convertStringToInt())

let intStr = "4"
// gibt 4 aus
print(intStr.convertStringToInt())

2voto

Nirmalsinh Rathod Punkte 5326

Ich habe kürzlich das gleiche Problem bekommen. Die folgende Lösung hat für mich funktioniert:

        let strValue = "123"
        let result = (strValue as NSString).integerValue

2voto

RonTLV Punkte 2367

Weil ein String nicht-numerische Zeichen enthalten kann, sollten Sie guard verwenden, um die Operation zu schützen. Beispiel:

guard let labelInt:Int = Int(labelString) else {
    return
}

useLabelInt()

1voto

Pengguna Punkte 4198

Swift 4, Swift 5

Es gibt verschiedene Fälle, um von einem Datentyp in einen anderen zu konvertieren, es hängt vom Eingang ab.

Wenn der Eingabedatentyp Any ist, müssen wir as verwenden, bevor wir ihn in den tatsächlichen Datentyp konvertieren und dann in den gewünschten Datentyp konvertieren. Zum Beispiel:

func justGetDummyString() -> Any {
  return "2000"
}
let dummyString: String = (justGetDummyString() as? String) ?? "" // Ausgabe = "2000"
let dummyInt: Int = Int(dummyString) ?? 0 // Ausgabe = 2000

1voto

Verwenden Sie dies:

// die Werte aus den Textfeldern abrufen
    let a:Double = firstText.text.bridgeToObjectiveC().doubleValue
    let b:Double = secondText.text.bridgeToObjectiveC().doubleValue

//  Wir überprüfen gegen 0.0, weil die obige Funktion 0.0 zurückgibt, wenn sie fehlschlägt
    if (a != 0.0) && (b != 0.0) {
        var ans = a + b
        answerLabel.text = "Die Antwort ist \(ans)"
    } else {
        answerLabel.text = "Eingabewerte sind nicht numerisch"
    }

ODER

Ändern Sie den KeyboardType Ihres UITextField auf DecimalTab in Ihrem XIB oder Storyboard und entfernen Sie alle Bedingungen für Berechnungen, d.h.

var ans = a + b
answerLabel.text = "Die Antwort ist \(ans)"

Weil der Tastaturtyp DecimalPad ist, besteht keine Möglichkeit, andere als 0-9 oder . einzugeben.

Hoffentlich hilft das !!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X