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中定义它。