1

私のデータ モデルでは、一部の属性にデータ検証に使用される正規表現が含まれています。私のコードには、同じ正規表現を使用したい場所があります。

一般的な正規表現を 1 か所に保持するために、これらの正規表現をコードで設定するか、コードでデータ モデルから取得することを望んでいました。

これを行う方法はありますか?

Regにアクセスしたい。元。以下に示すプロパティをコードで示します。

Regにアクセスしたい。 元。 コード内のプロパティ

4

3 に答える 3

2

からNSEntityDescriptionメソッドで属性を取得できますattributesByNameNSPropertyDescriptionその後、メソッドvalidationPredicatesとを使用できますsetValidationPredicates:withValidationWarnings:。データモデルファイルで検証正規表現を設定すると、内部で述語が作成されると思います...

これについては完全にはわかりませんが、これらの値を設定できるのは、コア データ モデルを作成するときだけであり、コア データ スタックをセットアップした後ではないと思います。それがあなたのやりたいことですか?

于 2013-07-29T15:00:40.673 に答える
1

絶対。モデル エディターで行うことはすべて、NSManagedObjectModelオブジェクトを操作することでコードで実行または変更できます。

コア データ スタックのセットアップでモデルが取得されている場所を見つけます (おそらくアプリ デリゲート内)。#defineモデルを返す前に、中央のインクルード ファイルで使用できる定数を使用して、コードでモデルを変更します。

オブジェクト モデルの API の詳細については、こちらをご覧ください。より正確にはentities、エンティティの説明を変更した後、validationPredicatesそのの の を変更して、モデルの を設定しattributesます。

于 2013-07-29T14:50:53.100 に答える
0

それが私をここに導いた答えだからです。述語を取得するために使用したコードは次のとおりです。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 に答える