Преобразование String в Int в Swift
Привет, я новичок в Swift, и я строю калькулятор в Xcode. В моей основной раскадровке у меня есть UIButton
, UILabel
и UITextField
, которые получат номер, и нажав кнопку, текст ярлыка должен показать введенный номер + 5. В моем приложении мне нужно преобразовать String
переменной до Int
.
Я попробовал фрагмент ниже. Я не получил никакого значимого результата.
var e = texti.text
let f: Int? = e.toInt()
let kashk = f * 2
label.text = "\(pashm)"
Ответы
Ответ 1
Чтобы сделать его чистым и Swifty, я предлагаю такой подход:
Swift 2/3
var string = "42" // here you would put your 'texti.text', assuming texti is for example UILabel
if let intVersion = Int(string) { // Swift 1.2: string.toInt()
let multiplied = 2 * intVersion
let multipliedString = "\(multiplied)"
// use the string as you wish, for example 'texti.text = multipliedString'
} else {
// handle the fact, that toInt() didn't yield an integer value
}
Ответ 2
Если вы хотите рассчитать с помощью этого нового целого, вам нужно развернуть его, поставив восклицательный знак за именем переменной:
let stringnumber = "12"
let intnumber:Int? = Int(stringnumber)
print(intnumber!+3)
Результат:
15
Ответ 3
var string = "12"
var intVersion = string.toInt()
let intMultipied = intVersion! * 2
label.text= "\(intMultipied)"
Ответ 4
Относительно того, как преобразовать строку в целое число:
var myString = "12" //Assign the value of your textfield
if let myInt = myString.toInt(){
//myInt is a integer with the value of "12"
} else {
//Do something, the text in the textfield is not a integer
}
if let
гарантирует, что ваше значение может быть добавлено к целому числу.
.toInt()
возвращает необязательное целое число. Если ваша строка может быть отброшена до целого числа, она будет возвращена, а она вернется nil
. Оператор if let
будет выдаваться только в том случае, если ваша строка может быть отправлена в целое число.
Так как новая переменная (постоянная, если быть точным) является целым числом, вы можете создать новую переменную и добавить 5 к значению вашего целого числа
var myString = "12" //Assign the value of your textfield
if let myInt = myString.toInt(){
//myInt is a integer with the value of "12"
let newInt = myInt + 5
myTextfield.text = "\(newInt)"
//The text of the textfield will be: "17" (12 + 5)
} else {
//Do something, the text in the textfield is not a integer
}