@fakin_kiska
Telegram Bots and iOS

Как сделать возврат нескольких значений в функции в одном return?

У меня есть функция, которая не дает подставить буквы в textField и возвращает "0.00" для пустой строки, но там используются if и guard, у которых есть свои отдельные return, из-за чего возникают некоторые трудности

Сама функция:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        // Принимаемые значения для текстового поля
        let allowedCharactersSet = CharacterSet(charactersIn: ".123456790")
        let typedCharacterSet = CharacterSet(charactersIn: string)

        guard let textFieldString = textField.text, let range = Range(range, in: textFieldString) else {
            return false
        }
    
        let newString = textFieldString.replacingCharacters(in: range, with: string)

        if newString.isEmpty {
            textField.text = "0.00"
            return false
        } else if textField.text == "0.00" {
            textField.text = string
            return false
        }

        return allowedCharactersSet.isSuperset(of: typedCharacterSet)
    }


Каким образом можно объединить все return, чтобы они одновременно работали?
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
@fakin_kiska Автор вопроса
Telegram Bots and iOS
Теперь все работает как я и хотел, достаточно было отредактировать строку c guard:

guard allowedCharactersSet.isSuperset(of: typedCharacterSet), let textFieldString = textField.text, let range = Range(range, in: textFieldString) else {
            return false
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Araya
А что значит одновременно работали return'ы? Тебе нужно несколько return'ов за раз вернуть? Кажись твой код вполне валидный
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы