Как сохранить текст метки как целочисленную переменную в swift? - PullRequest
0 голосов
/ 01 декабря 2018

Мне нужно сохранить изменяемый текст моего ярлыка как переменную, но если написать следующий код:

var warn = Int(self.dyn.text)

Там написано:

Value of optional type 'String?' must be unwrapped to a value of type 'String'
Coalesce using '??' to provide a default when the optional value contains 'nil'
Force-unwrap using '!' to abort execution if the optional value contains 'nil'

Какой код следует использовать

Ответы [ 3 ]

0 голосов
/ 01 декабря 2018

2 способа сделать это

1: let warn = Int(self.dyn.text ?? "") ?? 0

2: let warn = Int(self.dyn.text!)!
0 голосов
/ 01 декабря 2018

Хорошо.Поскольку String может быть "123" или "Hello,world", поэтому он может быть числовым или строковым текстом

При использовании этого Int(String) инициализатор может завершиться ошибкой, он возвращает необязательный Int, а не Int

Пример

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber is inferred to be of type "Int?", or "optional Int"

Так что вам нужно развернуть его

Вот так

   // unwrap text if TextField is not `!`  and then unwrap text when you convert to Int
    if let dynText = self.dyn.text , let warn = Int(dynText) {
       print(warn)
  }
0 голосов
/ 01 декабря 2018
var warn = Int(self.dyn.text ?? "") ?? 0

Вы должны указать значение по умолчанию, на случай, если невозможно выполнить приведение к Int.Вы также должны убедиться, что текстовое значение не равно nil.

Взгляните на необязательную цепочку и необязательную привязку

Другой подход:

    if let dynText = self.dyn.text {
        if let warn = Int(dynText) {

            // warn is an available int variable here.
        }
    }
...