如何为核心数据编写值验证方法?

时间:2010-06-07 20:18:56

标签: iphone core-data

文档说:

  

你应该实现的方法   form validate:error:,由NSKeyValueCoding协议定义

所以我想说我有一个属性是int:friendAge

我想确保任何朋友的年龄不得低于30岁。那我该如何制作验证方法呢?

-validateFriendAge:error:

我到底要做什么呢?我应该怎样处理我传递的NSError?我认为它有一个字典,我可以用任意语言(即当前使用的那个)返回一个人类可读的字符串,所以我可以输出一个合理的错误,如:“朋友不够老”......怎么做?

1 个答案:

答案 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;
}