获取NSManagedObject属性验证正则表达式

时间:2013-07-29 14:39:42

标签: ios xcode core-data

在我的数据模型中,某些属性具有用于数据验证的正则表达式。我的代码中有些地方我想使用那些相同的正则表达式。

为了将我的常用正则表达式保存在一个地方,我希望要么在代码中设置这些正则表达式,要么在代码中从数据模型中检索它们。

有办法做到这一点吗?

我想访问Reg。防爆。属性,如下所示,代码。

I want to access the Reg. Ex. property in code

3 个答案:

答案 0 :(得分:2)

NSEntityDescription,您可以使用方法attributesByName获取其属性。然后,您可以使用NSPropertyDescription方法validationPredicatessetValidationPredicates:withValidationWarnings:。我假设在您的datamodel文件中设置验证正则表达式时会创建一个谓词...

我对此并不完全确定,但我认为您只能在创建核心数据模型时设置这些值,而不是在设置核心数据堆栈后设置这些值。那是你想做的吗?

答案 1 :(得分:1)

绝对。您可以通过操作NSManagedObjectModel对象在代码中完成或修改模型编辑器中的所有操作。

找到在核心数据堆栈设置中检索模型的位置(可能在您的app delegate中)。在返回模型之前,使用常量包含文件中的#define常量在代码中修改它。

阅读有关对象模型的API here的所有信息。更确切地说,您在修改实体描述后通过更改其entities之一的validationPredicates来设置模型attributes

答案 2 :(得分:0)

我将e1985的答案标记为已被接受,因为这是我的答案。这是我用来获取谓词的代码。它属于NSEntityDescription类别。

- (NSPredicate*)getValidationPredicateForAttribute:(NSString*)attributeName
{
    NSAttributeDescription* emailAttribute = [self.attributesByName objectForKey:attributeName];
    NSArray* validationPredicates = [emailAttribute validationPredicates];

    if(validationPredicates.count > 0)
    {
        return [validationPredicates objectAtIndex:0];
    }

    return nil;
}
相关问题