文档说:
你应该实现的方法 form validate:error:,由NSKeyValueCoding协议定义
所以我想说我有一个属性是int:friendAge
我想确保任何朋友的年龄不得低于30岁。那我该如何制作验证方法呢?
-validateFriendAge:error:
我到底要做什么呢?我应该怎样处理我传递的NSError?我认为它有一个字典,我可以用任意语言(即当前使用的那个)返回一个人类可读的字符串,所以我可以输出一个合理的错误,如:“朋友不够老”......怎么做?
答案 0 :(得分:2)
你可以在那里做任何你想做的事。您可以验证年龄是否在范围或您想要的任何其他逻辑之间。
假设存在问题,您填充错误并至少拥有NSLocaliedDescriptionKey
的值。然后,该错误将被传递回UI或此值设置的任何值,并允许您处理验证错误。这意味着如果您在调用/设置方法中可能需要其他有用信息,则可以将其添加到此处的NSError
并接收它。
例如:
-(BOOL)validateFreindAge:(NSNumber*)ageValue error:(NSError **)outError
{
if ([ageValue integerValue] <= 0) {
NSString *errorDesc = @"Age cannot be below zero.";
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:errorDesc forKey:NSLocalizedDescriptionKey];
*error = [NSError errorWithDomain:@"MyDomain" code:1123 userInfo:dictionary];
return NO;
}
return YES;
}