Как проверить endIndex строки через IF? - PullRequest
0 голосов

Я хочу, чтобы калькулятор, который я делаю, а именно кнопка возврата, проверяла, удалена ли точка

if mainNumberLine.text!.endIndex == "." {

}

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

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Вам не нужно использовать индексы здесь.Вы можете переписать ваше состояние следующим образом:

if let text = mainNumberLine.text,
     text.last == "." {

}
0 голосов
/ 25 мая 2019

Чтобы проверить, стерто ли "." с backspace, вам просто нужно реализовать метод UITextFieldDelegate textField(_:shouldChangeCharactersIn:replacementString:)

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if string.isEmpty && textField.text?.last == "." {
        print(". is erased")
    }
    return true
}

В приведенном выше коде,

  1. string.isEmpty определяет, является ли replacementString empty string, т.е. нажата backspace.

  2. textField.text?.last указывает, является ли последний character из textField является "."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...