Простой вопрос, в настоящее время я использую Core Data. У меня есть форма, которая отвечает за вставку нового элемента. Если категории или названия нет, кнопка сохранения должна оставаться отключенной. В настоящее время я делаю это простое утверждение if в моем контроллере, но есть ли полезная практика по валидации в iOS-разработке?
Как и в rails или любой среде PHP MVC, любые проверки должны быть в моделях. Будет ли это так же для моделей данных Core?
Спасибо.
EDIT
В настоящее время я проверяю с помощью textFieldEditingChanged: если оба моих текстовых поля не пусты, чтобы включить кнопку сохранения. Когда они не пусты и пользователь нажимает Сохранить, я создаю свой новый объект данных Core и затем сохраняю его. Что бы вы предложили в соответствии с вашим решением?
Когда поле модифицируется методом
- (IBAction)textFieldEditingChanged:(UITextField *)textField
{
saveButton.enabled = [self validatesRequiredFields];
if (textField == descField)
{
itemDesc = descField.text;
}
else if (textField == personField)
{
personName = personField.text;
}
else if (textField == valueField)
{
itemValue = valueField.text;
}
}
Метод проверки
- (BOOL)validatesRequiredFields
{
if (category != nil && personField.text.length != 0)
{
return YES;
}
else
{
return NO;
}
}
При нажатии кнопки сохранения метод
- (IBAction)saveButtonPressed
{
item = [Item createEntity];
item.type = itemType;
item.desc = itemDesc;
item.value = itemValue;
item.imageFilename = itemImageFilename;
item.category = category;
item.addedDate = itemDueDate;
Person *p = [Person personWithName:personName];
item.person = p;
if (dueDateField)
{
item.dueDate = itemDueDate;
}
[delegate itemAddSaveButtonPressed:item];
}
РЕДАКТИРОВАТЬ 2
Что я сейчас использую
- (BOOL)isValid
{
BOOL valid;
NSError *error;
item.type = itemType;
item.desc = itemDesc;
item.value = itemValue;
item.imageFilename = itemImageFilename;
item.category = category;
item.addedDate = itemDueDate;
if (dueDateField)
{
item.dueDate = itemDueDate;
}
if (personName.length > 0)
{
item.person = [Person personWithName:personName];
}
else
{
item.person = nil;
}
if ([item validateForInsert:&error])
valid = YES;
else
valid = NO;
return valid;
}