2015-11-11 5 views
-1

Я пытаюсь быстро построить калькулятор, но, похоже, он не работает. Я не знаю, как это объяснить, но вот пример: если я подытожу 1 + 2, он вернет 12 вместо 3.Преобразование строки в int swift

Вот мой код. Обратите внимание, что num1 - первая часть операции, а вторая - num2.

var num1 : String = "" 
var num2 : String = "" 

@IBOutlet weak var label: UILabel! 

@IBAction func button(sender: UIButton) { 
    var currentnumber = self.label.text 
    var sendertag = String(sender.tag) 
    self.label.text = currentnumber! + sendertag 
} 

@IBAction func sum(sender: UIButton) {  
    num1 = self.label.text! 
    self.label.text = "" 
} 

@IBAction func enter(sender: UIButton) { 
    num2 = self.label.text! 

    num1.toInt() 
    num2.toInt() 

    self.label.text = num1 + num2 
} 
+1

Возможный дубликат [Получить числовое значение из строки в строке быстрого доступа] (http://stackoverflow.com/questions/24019236/get-number-value- from-string-in-swift) – Amadan

+0

@ user3457759 благодарит за ответ всем вам. Ваш код звучит разумно, но он по-прежнему отмечает ошибку. он говорит, что удалять восклицательные знаки, но если я это сделаю, тогда он говорит, что двоичный оператор «+» не может применяться к двум операторам int. Извините за это, я совершенно не знаком с Swift. Спасибо –

+0

@anhtu благодарит за ответ. Когда я выполняю код, он отмечает ошибку: двоичный оператор «+» не может быть применен к двум оперантам int –

ответ

1

Проблема в том, что вы пытаетесь подвести целых чисел, но вы на самом деле добавления строки, так как, когда вы делаете

self.label.text = currentnumber! + sendertag 

Оба являются строками (вы можете проверить тип на Xcode).

То, что вы хотите сделать, это добавить эти два числа, так что вы должны проанализировать их в целое, вы можете добиться этого, выполнив следующие действия

self.label.text = String(Int(current number!)! + Int(sendertag)!) 

Это, первый разборе в целое как строку и добавить их а затем проанализировать результат обратно на строку, потому что текст метки должен быть строкой.

0

При назначении суммы двух целых чисел в строковое значение, может неявно тип литьем из Int в строку

Заменить

self.label.text = num1 + num2 

с

var result: Int =num1+num2 
self.label.text=String(result) 

В Objective C это показывает ошибка: Xcode 4.2 или выше

Imp законное преобразование 'int' в 'NSString *' запрещено ARC

Смежные вопросы