2015-04-04 2 views
0

Я чрезвычайно новичок в Swift, и я пытаюсь построить простой калькулятор для тестирования воды. У меня есть UILabel с именем «display», и я хочу сохранить его значение как int в переменной с именем «numA». Однако, когда я это сделал, переменная numA получает значение nil.Дополнительные символы при развертывании необязательно в Swift

я понял, почему это произошло, потому что, когда я просто напечатать текст отображения в консоли:

println("\(display.text!)") 

я получаю это: «6» вместо «6». Обратите внимание на дополнительное пространство, добавленное в начале. Вот почему я не могу этого сделать:

var numA = display.text!.toInt() 

Что я делаю неправильно?

Благодаря

+3

Вы инициализирует свой 'display' в' «„'один пробел вместо'“» 'пустая строка? – vacawama

+0

Насколько я могу быть -_- Я не инициализировал его «", но он стал «» во время части моего кода. Спасибо, что указали! :) – madebysid

ответ

1

Ведущее пространство может быть там, потому что вы инициализации вашего display в " " (один пробел) вместо того, чтобы к "" (пустая строка). Даже если у вас есть пробелы в display.text, вы можете обрезать их перед вызовом toInt().

Обратите внимание, что с toInt() возвращает необязательный вариант, вы должны использовать необязательное связывание, чтобы развернуть его, чтобы предотвратить сбои приложений. Я рекомендую:

if let numA = display.text?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()).toInt() { 
    // use numA 
} 

Обратите внимание на использование ? после text вместо !. Это приведет к сбою вашего приложения, если display.text - nil. Это пример дополнительной цепи ; если display.text - nil, вся цепь будет nil.

Это может быть дополнительно упрощена путем выходить из NSCharacterSet, который Свифт может вывести из разговора:

if let numA = display.text?.stringByTrimmingCharactersInSet(.whitespaceCharacterSet()).toInt() { 
    // use numA 
} 
+0

Эту этикетку действительно «по ошибке». Спасибо за обходное решение, хотя, безусловно, будет полезно и в будущем! – madebysid

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