我正在尝试使用validatevalue:forkey:方法来验证coredata属性。
我有一个文本字段,我从我得到一个字符串然后想要检查该字符串与我的验证。
我假设它正在尝试对Reg进行验证。进出口。我有我的模特。
然而,无论我输入什么,它总是会通过验证。
编辑:
正则表达式是用于验证电子邮件的标准正则表达式。
我可以发布一些"官方"代码明天,但它基本上如下:
NSString *string = textfield.text;
if(![myEntity validateValue:&string forKey:@"email"])
{
// provide necessary user feed back i.e. let user know email is not in valid format}
}
答案 0 :(得分:0)
不确定validatevalue:forKey
:你想要什么。这就是验证的样子:
- (BOOL)validateEmail:(id *)value error:(NSError **)error {
if (self.email && ![self.email isValidEmailAddress]) {
if( error )
*error = [NSError errorWithDomain:@"MyErrorDomain" code:1];
return NO;
}
return YES;
}
请注意,isValidEmailAddress
实际上并不存在。 : - )
答案 1 :(得分:0)
NSPredicate documentation指定Cocoa使用ICU正则表达式作为谓词 - 这就是Core Data用于基于正则表达式验证的内容。这意味着您在互联网上找到的许多正则表达式可能无法正常工作而无需修改。您应该使用允许ICU正则表达式的工具测试您的正则表达式。非ICU正则表达式是正则表达式验证规则看起来不会执行的最常见原因,或者它应该在不应该执行时通过。
核心数据在自定义验证方法(遵循模式validate<Key>:error:
)之前评估托管对象模型中指定的验证规则。返回YES的这些方法之一的空实现可用于解决验证问题。