Задать вопрос
@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, чтобы они одновременно работали?
  • Вопрос задан
  • 241 просмотр
Подписаться 1 Средний 2 комментария
Решения вопроса 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'ов за раз вернуть? Кажись твой код вполне валидный
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы