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

0voto

Patrick Punkte 514

Ein Int in Swift enthält einen Initialisierer, der einen String akzeptiert. Er gibt einen optionalen Int? zurück, da die Konvertierung fehlschlagen kann, wenn der String keine Zahl enthält.

Indem man eine if let-Anweisung verwendet, kann man validieren, ob die Konvertierung erfolgreich war.

Also wird Ihr Code etwas wie folgt aussehen:

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

@IBAction func btn1(sender : AnyObject) {

    let antwort1 = "Die Geschwindigkeit ist"
    var antwort2 = txtBox1
    var antwort3 = txtBox2
    var antwort4 = txtBox3

    if let intAntwort = Int(txtBox1.text) {
      // Korrekt konvertiert
    }
}

0voto

Koushik Punkte 1150

Swift 5.0 und höher

Arbeiten

Falls Sie den String teilen, werden zwei Teilstrings erstellt und nicht zwei Strings. Diese untenstehende Methode überprüft auf Any und konvertiert es in NSNumber. Es ist einfach, ein NSNumber in einen Int, Float oder jeden anderen Datentypen umzuwandeln.

Tatsächlicher Code

// Any in Number-Objekt umwandeln und das optionale Schlüsselwort entfernen.
public func getNumber(number: Any) -> NSNumber{
 guard let statusNumber:NSNumber = number as? NSNumber  else {
    guard let statString:String = number as? String else {
        guard let statSubStr : Substring = number as? Substring else {
            return 0
        }
        if let myInteger = Int(statSubStr) {
            return NSNumber(value:myInteger)
        }
        else{
            return 0
        }
    }

    if let myInteger = Int(statString) {
        return NSNumber(value:myInteger)
    }
    else if let myFloat = Float(statString) {
        return NSNumber(value:myFloat)
    }else {
        return 0
    }
}
return statusNumber }

Verwendung

if let hourVal = getNumber(number: hourStr) as? Int {

}

Übergeben von String zur Überprüfung und Umwandlung in Double

Double(getNumber(number:  dict["OUT"] ?? 0)

0voto

Durul Dalkanat Punkte 6880

Für die alternative Lösung. Sie können eine Erweiterung eines nativen Typs verwenden. Sie können es mit dem Playground testen.

extension String {
    func add(a: Int) -> Int? {
        if let b = Int(self) {
            return b + a
        }
        else {
            return nil
        }
    }     
}

"2".add(1)

0voto

flame3 Punkte 2550

Meine Lösung besteht darin, eine allgemeine Erweiterung für die Umwandlung von String in Int zu haben.

extension String {

 // Standard: Es handelt sich um eine Zahl, die für Ihr Projekt geeignet ist, wenn der String keine ganze Zahl ist

    func toInt(default: Int) -> Int {
        if let result = Int(self) {
            return result
        }
        else {
            return default  
        }
    }

}

-1voto

Sam B Punkte 26515

Ab swift 3 muss ich meinen #%@! String & int mit einem "!" erzwingen, sonst funktioniert es einfach nicht.

Zum Beispiel:

let prefs = UserDefaults.standard
var counter: String!
counter = prefs.string(forKey:"counter")
print("counter: \(counter!)")

var counterInt = Int(counter!)
counterInt = counterInt! + 1
print("counterInt: \(counterInt!)")

AUSGABE:
counter: 1
counterInt: 2

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