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

Ios 获取NSManagedObject属性验证正则表达式,ios,xcode,core-data,Ios,Xcode,Core Data,在我的数据模型中,一些属性具有用于数据验证的正则表达式。在我的代码中,有些地方我希望使用这些正则表达式 为了将公共正则表达式保存在一个地方,我希望在代码中设置这些正则表达式,或者在代码中从数据模型中检索它们 有办法做到这一点吗 我想访问注册表。例如,属性,如下所示,以代码表示 绝对是。通过操纵NSManagedObjectModel对象,可以在代码中完成或修改在模型编辑器中执行的所有操作 在核心数据堆栈设置(可能在应用程序代理中)中找到模型的检索位置。在返回模型之前,请在代码中修改它,使用可以在

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

为了将公共正则表达式保存在一个地方,我希望在代码中设置这些正则表达式,或者在代码中从数据模型中检索它们

有办法做到这一点吗

我想访问注册表。例如,属性,如下所示,以代码表示


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

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


阅读有关对象模型API的所有信息。更准确地说,您可以在修改实体描述后,通过更改其
属性之一的
验证谓词来设置模型的
实体

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


我不能完全确定这一点,但我认为只有在创建核心数据模型时才能设置这些值,而不是在设置了核心数据堆栈之后。这就是你想做的吗

我将e1985的答案标记为已接受,因为正是这个答案让我来到了这里。这是我用来获取谓词的代码。它属于N实体描述的一个类别

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

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

    return nil;
}

正如您所暗示的,只有在将托管对象模型分配给持久存储协调器之前,此属性才是可变的;我能得到谓词这一事实对我来说已经足够好了。其想法是能够在一个地方定义正则表达式,并从任何地方访问它。有了您的答案,我可以在xcdatamodel中定义它。