Существуют универсальная библиотека валидаторов для obj-c? - PullRequest
1 голос
/ 14 января 2009

Интересно, существует ли уже универсальная библиотека валидаторов, подходящая для проекта iPhone (или, лучше, бизнес-объектов) для obj-c.

Такие вещи, как:

Validator.IsNotEmpty..
Validator.IsValidEmail..
Validator.IsValidZipCode..
Validator.IsValidRegex..
Validator.IsInRange..

Ответы [ 2 ]

4 голосов
/ 14 января 2009

Существует стандартный шаблон проверки в Какао, включая Cocoa Touch, называемый Проверка значения ключа , которому вы должны соответствовать, если хотите проверить ввод пользователя, отличный от NSFormatter. .

По сути, для свойства name, которое вы хотите проверить, вы реализуете метод по следующему шаблону:

- (BOOL)validateName:(id *)ioValue error:(NSError **)error;

Затем, когда вы хотите проверить свойство перед установкой его из пользовательского интерфейса, вы просто используете:

NSString *proposedName = [[nameField.stringValue copy] autorelease];
NSError *nameError;

if ([person validateValue:&proposedName forKey:@"name" error:&nameError]) {
    person.name = proposedName;
} else {
    // present nameError to the user in a reasonable way
}

Обратите внимание, что вы не вызываете метод -validateValue:forKey:error: или -validateName:error: в своем методе -setName:. Вместо этого вы вызываете свой метод -setName: (как я это делаю с помощью синтаксиса точек выше), как только вы знаете, что значение, которое вы передаете для него, будет действительным.

Кроме того, прочитайте документ о проверке значения ключа, о котором я упоминал выше, чтобы понять, почему proposedName является автоматически выпущенной копией строкового значения поля, а не только его строкового значения.

Если вы реализуете что-то более сложное, чем проверка по каждому свойству, например, проверка всего объекта или даже проверки графа объекта, обязательно посмотрите, как платформа Core Data в Mac OS X справляется с этим.

0 голосов
/ 14 января 2009

Я ничего не слышал. Если это то, что вам нужно, я бы использовал одну из библиотек регулярных выражений, доступных для Cocoa Touch, вы сможете найти примеры этих тестов довольно легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...