Скрытые контексты в матричной факторизации

Проверьте длину. Если он слишком длинный, верните NO. В противном случае проверьте правильность символов.

Ваш код для проверки действительных символов очень неэффективен.

Следующий код - лучший способ справиться с вашим случаем:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = textField.text.length + string.length - range.length;
    if (newLength > limitPassportNumber) {
        return NO; // too long
    }

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];
    NSRange badRange = [string rangeOfCharacterFromSet:cs];

    return badRange.location == NSNotFound;
}
Следующий код - лучший способ обработать ваш случай:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSUInteger newLength = textField.text.length + string.length - range.length;
    if (newLength > limitPassportNumber) {
        return NO; // too long
    }

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];
    NSRange badRange = [string rangeOfCharacterFromSet:cs];

    return badRange.location == NSNotFound;
}
0
задан Shaina Raza 20 January 2019 в 06:27
поделиться