Текст текстового поля (один или несколько) проверка регулярного выражения Swift UIKitIOS

Программируем под IOS
Ответить
Anonymous
 Текст текстового поля (один или несколько) проверка регулярного выражения Swift UIKit

Сообщение Anonymous »

Я создал логику регулярных выражений, она работает правильно, но в дополнение к одному текстовому полю у меня может быть их несколько, я создал словарь и переменную, чтобы она давала мне логическое значение true, при условии, что все текстовые поля, которые проверка регулярного выражения была верной, но, несмотря на это, когда одно текстовое поле возвращает true, allFieldsValid также возвращает true, мне нужно, чтобы все текстовые поля прошли проверку регулярного выражения и получили значение true, как я могу это исправить? и если мой код неверен, пожалуйста, помогите мне исправить его.
я записываю код ячеек
var regexValidate: Bool? = false
var validationResults: [String: Bool] = [:]
var allFieldsValid: Bool? = false
var requiredFields: Set = []

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {

if let regexPattern = regex {
print("IT IS REGEX!!--> [ \(regexPattern)")
let prospectiveText = (textField.text as NSString?)?.replacingCharacters(in: range,
with: string) ?? string
regexValidate = regexValidate(prospectiveText, withPattern: regexPattern)
if regexPattern == ""{
regexValidate = true
}
validationResults[paymentParametrName ?? ""] = regexValidate ?? false
requiredFields.insert(paymentParametrName ?? "")
allFieldsValid = checkAllFieldsValid()
print(" IS VALIDATE FOR CURRENT TEXTFIELD?? -->\(regexValidate) ] ---")
print("--->FULL Validation TEXTFIELDS: \(allFieldsValid)")
}
return true
}

private func regexValidate(_ text: String, withPattern pattern: String) -> Bool {
let regex = try? NSRegularExpression(pattern: pattern)
let range = NSRange(location: 0, length: text.utf16.count)
let matches = regex?.matches(in: text, options: [], range: range) ?? []
return matches.count == 1 && matches.first?.range == range
}

private func checkAllFieldsValid() -> Bool {
for field in requiredFields {
if validationResults[field] != true {
return false
}
}
return !requiredFields.isEmpty
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... wift-uikit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»