Пожалуйста, прочитайте полный пост на http://cocoawithlove.com.
В Какао NSPredicate работает во многих
так же, как предложение "ГДЕ"
SQL. Основная причина, по которой NSP предикат
приносят в iPhone, что
NSPredicate выполняет ту же роль в
Базовые данные, которые удовлетворяют условиям "ГДЕ"
в SQL - разрешить постоянное хранилище
извлекать объекты, которые удовлетворяют конкретным
критерии.
// given an NSDictionary created used the above method named "row"...
NSPredicate *johnSmithPredicate =
[NSPredicate predicateWithFormat:@"firstname = 'John' AND lastname = 'Smith'"];
BOOL rowMatchesPredicate = [johnSmithPredicate evaluateWithObject:row];
Проверка адреса электронной почты
Оператор сравнения "LIKE" в
NSPredicate
(NSLikePredicateOperatorType)
обычно используется как удобное средство
тестирование, если NSString соответствует
Регулярное выражение. Это преимущество
над полными библиотеками с большим
варианты и возможность замены
что это уже в какао - нет
библиотеки, без связей, без хлопот.
Вы можете сделать простой тест:
NSPredicate *regExPredicate =
[NSPredicate predicateWithFormat:@"SELF MATCHES %@", regularExpressionString];
BOOL myStringMatchesRegEx = [regExPredicate evaluateWithObject:myString];
Единственный вопрос, который остается:
что такое регулярное выражение, которое может
использоваться для проверки того, что NSString
содержит синтаксически действительный адрес электронной почты
адрес
NSString *emailRegEx =
@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
@"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
@"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
@"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";