2012-03-28 13 views
3

CoreDataで使用するために作成されたNSManagedObjectクラスがいくつかあります。GRMustacheテンプレートを使用して書式設定のプロパティを追加する必要があります。ここでNSManagedObjectにセカンダリの.h .mファイルを追加するプロパティを追加します。

は、例のプロパティです:

-(NSString *) PriceFormatted { 
    NSNumberFormatter *nfm = [[[NSNumberFormatter alloc] init] autorelease]; 
    [nfm setNumberStyle:NSNumberFormatterCurrencyStyle]; 
    [nfm setCurrencyCode:[Helpers GetCurrencyCode]]; 
    [nfm setNegativeFormat:@"-¤#,##0.00"]; 
    [nfm setMaximumFractionDigits:2]; 

    return [nfm stringFromNumber:self.Price]; 
} 

私は現在、私の生成NSManagedObjectクラスでこれを持っていますが、私は新しいNSManagedObjectクラスを再生成する必要がある場合、これは問題が発生します。 C#でのパーシャルに似て -

は、私はクラスの二次セットでこれらのプロパティを定義することはできますか?

答えて

7

おそらく最も簡単な方法は、生成された管理対象オブジェクトにカテゴリを追加することです。

HereはAppleのドキュメントです。かなり簡単です。引用する

あなたはカテゴリ名の下にインタフェースファイル でそれらを宣言すると、同じ名前で実装ファイル でそれらを定義することで、クラスにメソッドを追加することができます。カテゴリ名は、メソッドが のクラスへの追加が新しいクラスではなく他の場所で宣言されていることを示します。ただし、 クラスを使用して、追加のインスタンス変数を クラスに追加することはできません。カテゴリが追加されます

メソッドは、クラス型の一部となります。 の例では、カテゴリ内のNSArrayクラスに追加されたメソッドは、 に含まれています。コンパイラは、NSArrayインスタンスがその レパートリーに持つと予想します。サブクラスのNSArrayクラスに追加されたメソッドは、 ですが、NSArrayタイプには含まれていません。 (静的型付けが コンパイラは、オブジェクトのクラスを知ることができる唯一の方法であるので、これはのみのため 静的に型付けされたオブジェクトを問題になります。)

カテゴリーの方法は、適切なクラス で定義されたメソッドは、何かできることを行うことができます。実行時には違いはありません。 カテゴリがクラスに追加するメソッドは、他のメソッドと同様に、すべてのクラスの サブクラスによって継承されます。

カテゴリインターフェイスの宣言は、クラス名の後ろに の中にカテゴリ名がリストされ、スーパークラスが記述されていないことを除き、クラス インターフェイス宣言に非常に似ています。カテゴリが追加 を宣言することができないこと

#import "ClassName.h" 

    @interface ClassName (CategoryName) 
     // method declarations 
    @end 

注: 、そのメソッドがクラスの任意のインスタンス変数にアクセスしない場合を除き、カテゴリは、それが拡張するクラスのためのインターフェイスファイルをインポートする必要がありますクラスのインスタンス変数。メソッドだけが含まれています。ただし、 クラスのスコープ内のすべてのインスタンス変数は、 の範囲内にあります。これには、クラスによって宣言されたすべてのインスタンス変数 が含まれ、@privateと宣言されたものも含まれます。

あなたは クラスに追加できますが、各カテゴリ名が異なっている必要があり、それぞれが 宣言とメソッドの異なるセットを定義する必要がありますカテゴリの数に制限はありません。

2

これはCoreDataの一般的な問題です。 Check 、https://github.com/mxcl/homebrewでインストールできます。

Mogeneratorは、データモデルのプロパティを含む2つのクラスを生成します.1つは、データモデルを更新するたびに再作成されます。もう一つは、あなた自身の方法とカテゴリーのために残るものです。 GRMustacheカテゴリに最適なコンテナです。

ところで、あなたはGRMustacheの書式設定能力をチェックすることができますが、それらもあなたを助けるかもしれません:https://github.com/groue/GRMustache/blob/master/Guides/NSFormatter.md

関連する問題