Я новичок в использовании Regex и NSPredicates. Я пытаюсь преобразовать ниже объектного кода для быстрой и он терпит неудачу с ошибкой при слежении:Оценка Swift NSPredicate не удалась
'NSInvalidArgumentException', reason: 'Can't do regex matching on object SELF MATCHES "[email protected]([A-Za-z0-9-]+\.)+[A-Za-z]{2}[A-Za-z]*".'
Цель код C:
- (BOOL)validateEmailWithString:(NSString*)userEmail
{
BOOL stricterFilter = NO;
NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
NSString *laxString = @"[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:userEmail];
}
Эквивалент Swift Code
func validateEmail(withString userEmail: String) -> Bool {
let stricterFilter: Bool = false
let stricterFilterString: String = "[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}"
let laxString: String = "[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"
let emailRegex: String = stricterFilter ? stricterFilterString : laxString
let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegex)
return emailTest.evaluate(with: emailTest)
}
Исключение происходит в этой строке:
return emailTest.evaluate(with: emailTest)
Объективный код C работает нормально, но при быстром отключении приложения. Может кто-нибудь, пожалуйста, помогите мне с этим?
'оценить ... userEmail' против' оценить ... emailTest' – vadian
Вы найдете ответ на свой вопрос здесь HTTP : //stackoverflow.com/questions/25471114/how-to-validate-an-e-mail-address-in-swift Приветствия –
@vadian Спасибо, что указали на проблему. Моя вина! –