Aplikacja zasadniczo oblicza przyspieszenie, wprowadzając początkową i końcową prędkość i czas, a następnie używa wzoru do obliczenia przyspieszenia. Ponieważ jednak wartości w polach tekstowych są ciągami, nie jestem w stanie przekonwertować ich na liczby całkowite.
@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
źródło
źródło
var answer1 = Int(txtBox1.text)
Odpowiedzi:
Podstawowa idea, zauważ, że działa to tylko w Swift 1.x (sprawdź odpowiedź ParaSary, aby zobaczyć, jak to działa w Swift 2.x):
Aktualizacja dla Swift 4
źródło
'NSString' does not have a member named 'toInt'
. Jakieś pomysły?NSString
iString
są dwoma różnymi obiektami i mają różne metody.NSString
ma metodę o nazwie.intValue
Zaktualizuj odpowiedź dla swift 2.0 :
toInt()
metoda otrzymuje błąd. Ponieważ w Swift 2.x.toInt()
funkcja została usunięta z String. W zamian Int ma teraz inicjalizator, który akceptuje ciąg znaków:źródło
"\(someInt)"
nie jest dobreString(someInt)
jest o wiele łatwiejsze do odczytaniaInt(firstText.text)!
a następnie nadal widzę opcjonalne. Dlaczego? Czy go nie rozpakowałem?nil
. Może się tak nie zdarzyć, gdy ciąg znaków pochodzi z elementu interfejsu użytkownika, jak w tym przypadku. Ale jeden sposób, aby zapobiec awarii jest dodanie wartości domyślnej do napisu:let a:Int? = Int(firstText.text ?? "")
.myString.toInt()
- przekonwertuj wartość ciągu na int.Swift 3.x
Jeśli masz liczbę całkowitą ukrytą w ciągu, możesz przekonwertować za pomocą konstruktora liczb całkowitych, tak jak to:
Podobnie jak w przypadku innych typów danych (Float i Double), możesz także konwertować za pomocą NSString:
źródło
edycja / aktualizacja: Xcode 11.4 • Swift 5.2
Sprawdź komentarze za pomocą kodu
Zawartość pliku IntegerField.swift :
Musisz także dodać te rozszerzenia do swojego projektu:
Rozszerzenia Zawartość pliku UITextField.swift :
Rozszerzenia Formatter.swift zawartość pliku:
Rozszerzenia Zawartość pliku NumberFormatter.swift :
Rozszerzenia Zawartość pliku StringProtocol.swift :
Przykładowy projekt
źródło
Możesz użyć
NSNumberFormatter().numberFromString(yourNumberString)
. Jest świetny, ponieważ zwraca opcję opcjonalną, z którą można następnie przetestować,if let
aby ustalić, czy konwersja się powiodła. na przykład.Szybki 5
źródło
szybki 4.0
możesz także użyć Opcjonalnego wiązania innego niż wiązanie wymuszone.
na przykład:
źródło
// Xcode 8.1 i szybki 3.0
Możemy sobie z tym poradzić również poprzez opcjonalne wiązanie
źródło
W Swift 4.2 i Xcode 10.1
źródło
Szybki 3
Najprostszym i bezpieczniejszym sposobem jest:
Unikaj nieprawidłowych wartości ustawiających typ klawiatury na klawiaturę numeryczną:
źródło
W Swift 4:
źródło
Zrobiłem prosty program, w którym masz 2 pola tekstowe, które pobierasz od użytkownika i dodajesz, aby ułatwić zrozumienie, znajdź poniższy kod.
mam nadzieję że to pomoże.
źródło
Swift 3.0
Spróbuj tego, nie musisz sprawdzać żadnego warunku Zrobiłem wszystko, po prostu użyj tej funkcji. Wyślij dowolny ciąg, liczbę, liczbę zmiennoprzecinkową, podwójną itp. otrzymasz liczbę jako wartość lub 0, jeśli nie będzie w stanie przekonwertować twojej wartości
Funkcjonować:
Użycie: Dodaj powyższą funkcję do kodu i przekonwertuj użycie,
let myNumber = getNumber(number: myString)
jeślimyString
ma liczbę lub ciąg znaków, zwraca liczbę, którą zwraca0
Przykład 1:
Wynik:
printing number 9834
Przykład 2:
Wynik:
printing number 9834
Przykład 3:
Wynik:
printing number 9834
źródło
Przydatne dla String na Int i innego typu
Użyj tego jak:
źródło
Informacje o int () i Swift 2.x: jeśli po konwersji uzyskasz zero, sprawdź, czy próbujesz przekonwertować ciąg z dużą liczbą (na przykład: 1073741824), w tym przypadku spróbuj:
źródło
Najnowsze swift3 ten kod jest po prostu przekonwertować ciąg na int
źródło
Ponieważ ciąg znaków może zawierać znaki nienumeryczne, należy użyć znaku a w
guard
celu ochrony operacji. Przykład:źródło
Niedawno dostałem ten sam problem. Poniższe rozwiązanie jest dla mnie pracą:
źródło
Użyj tego:
LUB
Ustaw UITextField KeyboardType jako DecimalTab z XIB lub storyboardu i usuń wszelkie warunki do wykonywania jakichkolwiek obliczeń, tj.
Ponieważ typ klawiatury to DecimalPad, nie ma szans na wprowadzenie innych cyfr 0-9 lub.
Mam nadzieję, że to pomoże !!
źródło
źródło
To działa dla mnie
źródło
dla Swift3.x
źródło
dla alternatywnego rozwiązania. Możesz użyć rozszerzenia typu natywnego. Możesz przetestować na placu zabaw.
„2” .add (1)
źródło
Moim rozwiązaniem jest ogólne rozszerzenie konwersji łańcucha na int.
źródło
źródło
Pytanie: ciągu „4.0000” nie można przekonwertować na liczbę całkowitą za pomocą Int („4.000”)?
Odpowiedź: Ciąg kontrolny Int () jest liczbą całkowitą, czy nie, jeśli tak, to daje liczbę całkowitą, a w przeciwnym razie zero. ale Float lub Double mogą konwertować dowolny ciąg liczbowy na odpowiedni Float lub Double bez podania wartości zero. Przykład, jeśli masz ciąg liczb całkowitych „45”, ale użycie zmiennoprzecinkowe („45”) daje wartość zmiennoprzecinkową 45,0 lub użycie podwójnego („4567”) daje 45,0.
Rozwiązanie: NSString (ciąg: „45.000”). IntegerValue lub Int (Float („45.000”)!)! aby uzyskać poprawny wynik.
źródło
Int w Swift zawiera inicjator, który akceptuje ciąg znaków. Zwraca opcjonalny Int? ponieważ konwersja może się nie powieść, jeśli ciąg nie zawiera liczby.
Za pomocą instrukcji if let możesz sprawdzić, czy konwersja się powiodła.
Twój kod stanie się mniej więcej taki:
źródło
Swift 5.0 i wyżej
Pracujący
W przypadku dzielenia
String
tworzy dwa,substrings
a nie dwaStrings
. Będzie to poniżej metody sprawdzaniaAny
i przekształcić go t0NSNumber
jej łatwo przekonwertowaćNSNumber
doInt
,Float
jakie kiedykolwiek dane wpisz czego potrzebujesz.Aktualny kod
Stosowanie
Przekazywanie
String
do sprawdzenia i konwersji naDouble
źródło
Swift5 float lub int string na int:
źródło
Począwszy od szybkiego 3 , muszę wymusić #% @! string i int z „!” inaczej to po prostu nie działa.
Na przykład:
źródło
var counterInt = counter.map { Int($0) }
? Gdziecounter
może byćString?
guard
iif let
oświadczeniaKonwertuj wartość ciągu na liczbę całkowitą w Swift 4
źródło