У нас есть живое приложение с определенным количеством пользователей. В следующем обновлении нам нужно добавить ограничения на ввод имени и фамилии (длиной не более 25 символов и без пробелов, цифр и т. Д. c.)
Вот как я это делаю:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == surnameTextField, textField == nameTextField {
let currentText = textField.text ?? ""
guard let stringRange = Range(range, in: currentText) else { return false }
let updatedText = currentText.replacingCharacters(in: stringRange, with: string)
let allowedCharacters = CharacterSet.letters
let finalCaracterSet = CharacterSet(charactersIn: updatedText)
return updatedText.count <= 25 && allowedCharacters.isSuperset(of: finalCaracterSet)
}
return true
}
Все работает как положено, кроме одного. Что если у нас уже есть пользователи, у которых есть цифры или символы в их именах / фамилиях? (Пользовательские данные хранятся локально)? Они не смогут изменить свое имя / фамилию.
Как разрешить существующим пользователям редактировать свои учетные данные после этого обновления?
Например, в случае имени Emma_Lew приведенный выше код всегда будет возвращать false, поскольку allowedCharacters.isSuperset(of: finalCaracterSet)
- false (содержит подчеркивание).