在我的数据模型中,一些属性具有用于数据验证的正则表达式。我的代码中有一些地方我想使用这些相同的正则表达式。
为了将常用的正则表达式保存在一个地方,我希望要么在代码中设置这些正则表达式,要么在代码中从数据模型中检索它们。
有没有办法做到这一点?
我想访问注册。前任。属性,如下所示,在代码中。
从 aNSEntityDescription
您可以使用 method 获取其属性attributesByName
。然后你可以使用NSPropertyDescription
方法validationPredicates
和setValidationPredicates:withValidationWarnings:
。我假设当您在数据模型文件中设置验证正则表达式时,会在后台创建一个谓词...
我对此并不完全确定,但我认为您只能在创建核心数据模型时设置这些值,而不是在设置了核心数据堆栈后。那是你想做的吗?
绝对地。您在模型编辑器中所做的一切都可以通过操作您的NSManagedObjectModel
对象在代码中完成或修改。
在您的核心数据堆栈设置中找到模型的检索位置(可能在您的应用程序委托中)。在返回模型之前,在代码中修改它,使用可以#define
在中央包含文件中的常量。
在此处阅读有关对象模型 API 的所有信息。更准确地说,您可以entities
在修改实体描述后设置模型,方法是更改validationPredicates
其中一个attributes
.
我将 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;
}