3

私は初めてでcore data、の使い方に頭を悩ませようとしていますNSManagedObjects。基本的に、私は使用して保存しようとしているいくつかのオブジェクトを持っていますcore data(それらは互いに関係があります)。

コアデータを調べる前に、3で構成される基本モデルを作成しました。次に、このモデルから3NSObjectsを作成して生成しました。既存の3つ(指定された初期化子と特殊なゲッターとセッターなど)には、まだ使用したいロジックがいくつかあります。core data modelNSManagedObjectsNSObjects

私の質問は、ロジックを3から3NSObjectsに直接転送NSManagedObjectsして、元のデザインと同じように使用できるか(簡単に永続化できるという追加のボーナスがあります)、または両方を維持する必要があるかどうかですNSObjects。同様にNSManagedObject

誰かがベストデザインプラクティスについてアドバイスしてもらえますか?コードをできるだけクリーンで構造化された状態に保ちたいと思います。

前もって感謝します!

4

2 に答える 2

8

からNSManagedObject継承するためNSObject、カスタムクラスのスーパークラスをからに変更するだけで機能が失わNSObjectれるNSManagedObjectことはありません。ただし、の名前と衝突するメソッド/プロパティ名がない場合に限りますNSManagedObject。このように、元のクラスを保持する必要がないため、コードがよりクリーンになり、ロジックがより単純になります。

于 2012-11-18T20:36:42.783 に答える
6

NSManagedObjectに機能を追加する必要がある場合は、カテゴリを作成して別のファイルに保存します。これは、.xcdatamodeldファイルを変更すると、更新されたファイルを手動で変更するのではなく、通常NSManagedObjectサブクラスをオーバーライドするためです。

Offer + Localized.h:

#import "Offer.h"
@interface Offer (Localized)
- (NSString *) localizedPrice;
@end

Offer + Localized.m:

@implementation Offer (Localized)

- (NSString *) localizedPrice;
{
    if ( self.price > 0 ) {
        return [NSString stringWithFormat:NSLocalizedString(@"Price: %d", nil), self.price];
    } else {
        return NSLocalizedString(@"Free", nil);
    }
}

@end
于 2012-11-19T00:17:38.880 に答える