1

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

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

有没有办法做到这一点?

我想访问注册。前任。属性,如下所示,在代码中。

我想访问注册。 前任。 代码中的属性

4

3 回答 3

2

从 aNSEntityDescription您可以使用 method 获取其属性attributesByName。然后你可以使用NSPropertyDescription方法validationPredicatessetValidationPredicates:withValidationWarnings:。我假设当您在数据模型文件中设置验证正则表达式时,会在后台创建一个谓词...

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

于 2013-07-29T15:00:40.673 回答
1

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

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

在此处阅读有关对象模型 API 的所有信息。更准确地说,您可以entities在修改实体描述后设置模型,方法是更改validationPredicates​​其中一个attributes.

于 2013-07-29T14:50:53.100 回答
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;
}
于 2013-07-29T15:45:38.457 回答