Как я могу преобразовать строку в двойную, если строка необязательна? - PullRequest
0 голосов
/ 11 марта 2019

Я хотел бы взять ввод в UITextField и преобразовать его в Double для расчета с ним.

func testFunction(field: UITextField) -> Int {
   let textInField: String! = field.text
           let value = Double!(textInField)

}

Но я получаю сообщение об ошибке:

'String?'не конвертируется в 'Double'

Как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

text свойство UITextField:

По умолчанию эта строка @ "".

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

let textInField = field.text! // String

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

func testFunction(field: UITextField) -> Double? {
    return Double(field.text!)
}

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

if let doubleValue = testFunction(field: someField) {
    // work with `doubleValue`
}
0 голосов
/ 12 марта 2019

Может быть, это правильный формат?

   func testFunction(field: UITextField) -> Int {
 if  let textInField  = field.text ,
      let value = Double(textInField){
   print(value)
   }}
...