Die Anwendung berechnet die Beschleunigung im Wesentlichen durch Eingabe der Anfangs- und Endgeschwindigkeit und -zeit und verwendet dann eine Formel zur Berechnung der Beschleunigung. Da die Werte in den Textfeldern jedoch Zeichenfolgen 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 = "The acceleration is"
var answer2 = txtBox1
var answer3 = txtBox2
var answer4 = txtBox3
ios
swift
int
uitextfield
Marwan Qasem
quelle
quelle
var answer1 = Int(txtBox1.text)
Antworten:
Grundlegende Idee: Beachten Sie, dass dies nur in Swift 1.x funktioniert ( lesen Sie die Antwort von ParaSara, um zu sehen, wie es in Swift 2.x funktioniert):
Update für Swift 4
quelle
'NSString' does not have a member named 'toInt'
. Irgendwelche Ideen?NSString
undString
sind zwei verschiedene Objekte und haben unterschiedliche Methoden.NSString
hat eine Methode namens.intValue
Update Antwort für Swift 2.0 :
toInt()
Methode wird ein Fehler gegeben. In Swift 2.x wurde die.toInt()
Funktion aus String entfernt. Als Ersatz hat Int jetzt einen Initialisierer, der einen String akzeptiert:quelle
"\(someInt)"
ist nicht gutString(someInt)
ist viel einfacher zu lesenInt(firstText.text)!
und sehe dann immer noch optional. Warum? Habe ich es nicht ausgepackt?nil
. Kann nicht passieren, wenn die Zeichenfolge wie in diesem Fall von einem UI-Element stammt. Eine Möglichkeit, den Absturz zu verhindern, besteht darin, der Zeichenfolge einen Standardwert hinzuzufügen :let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- Konvertieren Sie den Zeichenfolgenwert in int.Swift 3.x.
Wenn sich in einer Zeichenfolge eine Ganzzahl versteckt, können Sie diese mithilfe des Konstruktors der Ganzzahl wie folgt konvertieren:
Wie bei anderen Datentypen (Float und Double) können Sie auch mit NSString konvertieren:
quelle
Bearbeiten / Aktualisieren: Xcode 11.4 • Swift 5.2
Bitte überprüfen Sie die Kommentare durch den Code
Inhalt der IntegerField.swift- Datei:
Sie müssten diese Erweiterungen auch zu Ihrem Projekt hinzufügen:
Erweiterungen Inhalt der UITextField.swift- Datei:
Erweiterungen Inhalt der Datei Formatter.swift:
Erweiterungen NumberFormatter.swift- Dateiinhalt:
Erweiterungen StringProtocol.swift- Dateiinhalt:
Beispielprojekt
quelle
Sie können verwenden
NSNumberFormatter().numberFromString(yourNumberString)
. Es ist großartig, weil es ein optionales Element zurückgibt, mit dem Sie dann testen könnenif let
, ob die Konvertierung erfolgreich war. z.B.Swift 5
quelle
schnell 4.0
Sie können auch eine andere optionale Bindung als die erzwungene Bindung verwenden.
z.B:
quelle
// Xcode 8.1 und Swift 3.0
Wir können es auch durch optionale Bindung einfach handhaben
quelle
In Swift 4.2 und Xcode 10.1
quelle
Swift 3
Der einfachste und sicherste Weg ist:
Vermeiden Sie ungültige Werte, indem Sie den Tastaturtyp auf den Nummernblock setzen:
quelle
In Swift 4:
quelle
Ich habe ein einfaches Programm erstellt, in dem Sie 2 txt-Felder haben, die Sie vom Benutzer eingeben und hinzufügen, um das Verständnis zu vereinfachen. Bitte finden Sie den folgenden Code.
hoffe das hilft.
quelle
Swift 3.0
Versuchen Sie dies, Sie müssen nicht nach Bedingungen suchen, bei denen ich alles getan habe. Verwenden Sie einfach diese Funktion. Senden Sie alles String, Nummer, Float, Double, etc. Sie erhalten eine Zahl als Wert oder 0, wenn Ihr Wert nicht konvertiert werden kann
Funktion:
Verwendung: Fügen Sie die obige Funktion in den Code ein und konvertieren Sie die Verwendung,
let myNumber = getNumber(number: myString)
wenn diemyString
eine Zahl oder Zeichenfolge hat, die zurückgegebene Nummer0
Beispiel 1:
Ausgabe:
printing number 9834
Beispiel 2:
Ausgabe:
printing number 9834
Beispiel 3:
Ausgabe:
printing number 9834
quelle
Nützlich für String to Int und andere Typen
Verwenden Sie es wie:
quelle
Informationen zu int () und Swift 2.x: Wenn Sie nach der Konvertierung einen Nullwert erhalten, überprüfen Sie, ob Sie versuchen, eine Zeichenfolge mit einer großen Zahl (z. B. 1073741824) zu konvertieren. In diesem Fall versuchen Sie Folgendes:
quelle
Neueste swift3 dieser Code ist einfach, um Zeichenfolge in int zu konvertieren
quelle
Da eine Zeichenfolge möglicherweise nicht numerische Zeichen enthält, sollten Sie a verwenden
guard
, um die Operation zu schützen. Beispiel:quelle
Ich habe vor kurzem das gleiche Problem bekommen. Die folgende Lösung ist Arbeit für mich:
quelle
Benutze das:
ODER
Erstellen Sie Ihren UITextField KeyboardType als DecimalTab aus Ihrem XIB oder Storyboard und entfernen Sie alle if-Bedingungen für die Durchführung von Berechnungen, z.
Da der Tastaturtyp DecimalPad ist, besteht keine Möglichkeit, andere 0-9 oder einzugeben.
Ich hoffe das hilft !!
quelle
quelle
Das funktioniert bei mir
quelle
für Swift3.x
quelle
für alternative Lösung. Sie können die Erweiterung eines nativen Typs verwenden. Sie können mit Spielplatz testen.
"2" .add (1)
quelle
Meine Lösung besteht darin, eine allgemeine Erweiterung für die Konvertierung von Zeichenfolgen in int zu haben.
quelle
quelle
Frage: Die Zeichenfolge "4.0000" kann mit Int ("4.000") nicht in eine Ganzzahl konvertiert werden.
Antwort: Int () prüft, ob die Zeichenfolge eine Ganzzahl ist oder nicht, wenn ja, geben Sie eine Ganzzahl und ansonsten Null an. Float oder Double können jedoch eine beliebige Zeichenfolge in Float oder Double konvertieren, ohne Null zu geben. Beispiel: Wenn Sie eine Ganzzahlzeichenfolge "45" haben, Float ("45") jedoch einen Float-Wert von 45,0 ergibt oder Double ("4567") 45,0 ergibt.
Lösung: NSString (Zeichenfolge: "45.000"). IntegerValue oder Int (Float ("45.000")!)! um das richtige Ergebnis zu erhalten.
quelle
Ein Int in Swift enthält einen Initialisierer, der einen String akzeptiert. Es wird ein optionales Int? da die Konvertierung fehlschlagen kann, wenn die Zeichenfolge keine Zahl enthält.
Mit einer if let-Anweisung können Sie überprüfen, ob die Konvertierung erfolgreich war.
Ihr Code wird also ungefähr so:
quelle
Swift 5.0 und höher
Arbeiten
Wenn Sie das teilen
String
, werden zweisubstrings
und nicht zwei erstelltStrings
. Diese unten Methode wird für überprüfenAny
und wandeln es t0 istNSNumber
es einfach ein konvertierenNSNumber
zuInt
,Float
was auch immer Sie benötigen , um Daten eingeben.Tatsächlicher Code
Verwendungszweck
Übergeben
String
, um zu überprüfen und zu konvertierenDouble
quelle
Swift5 float oder int string to int:
quelle
Ab Swift 3 muss ich mein #% @ erzwingen! string & int mit einem "!" sonst funktioniert es einfach nicht.
Zum Beispiel:
quelle
var counterInt = counter.map { Int($0) }
? Wocounter
sollte ein seinString?
guard
undif let
AussagenKonvertieren Sie den String-Wert in Swift 4 in Integer
quelle