0

現在、Web コンテンツの取得に大きく依存するアプリを開発しています。JSON 形式で取得するコンテンツを表す一連の NSObject クラスがあります。また、ほとんど同じ Core Data モデルを表す NSManagedObject クラスもあります。

Web コンテンツを保持するために使用する NSObject クラスの例を次に示します。

    @interface MovieRecord : NSObject {
 NSString  *movieTitle;
 NSDecimalNumber *movieId;
 NSString  *movieRating;
 NSString  *movieDescription;

 NSDate  *movieReleaseDate;

 NSMutableArray  *movieVideos;  //  collection of class videoRecord
 NSMutableArray  *actors;

 UIImage  *movieImage;
 NSURL  *movieImageURL; 
}

そして、これが私の NSManagedObject クラスの例です:

@interface Movie :  NSManagedObject  
{
}

@property (nonatomic, retain) NSNumber * id;
@property (nonatomic, retain) NSString * description;
@property (nonatomic, retain) id image;
@property (nonatomic, retain) NSString * rating;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSDate * releaseDate;
@property (nonatomic, retain) NSString * imageURL;
@property (nonatomic, retain) NSSet* actors;

@end

この例では、ユーザーは多くの映画に目を通しますが、常に映画を永続ストアに保存するとは限りません。それが、最初に情報を別のクラスに保存する主な理由でした。その後、情報を保存することにした場合は、NSManaged オブジェクト クラスにデータを入力して保存します。ユーザーが詳細ビューにドリルダウンするまで、NSObject クラスは完全に設定されません (最初は movieTitle と movieID のみが設定されます)。

ここでの私の質問は、これらのクラスを別々にしておくことは理にかなっていると思いますか? 私が見ていない、これに対するより良い設計アプローチはありますか? NSDictionary を使用してテーブル ビューにデータを入力することに固執する必要がありますか (NSDictionary は JSON データから入力されます)。

4

2 に答える 2

1

あなたがこの問題を解決したかどうかはわかりませんが、すべてのオブジェクトに NSManagedObject を使用し、関心のあるオブジェクトのみを永続化することをお勧めします。

すべてのオブジェクトはコンテキストに保持され、コンテキストを明示的に保存するまで永続化されないことに注意してください。その前に、不要なものを取り除き、コンテキストに保存メッセージを送信できます。

于 2010-12-08T07:03:26.387 に答える
0

管理オブジェクト モデルからの正しい情報で初期化する限り、管理オブジェクトをコンテキストに挿入する必要はありません。アプリ デリゲートからマネージド オブジェクト モデルを取得できると仮定すると、次のようなことができます。

NSManagedObjectModel *objectModel = [appDelegate managedObjectModel];
Movie *obj = [[Movie alloc]
    initWithEntity:[[objectModel entitiesByName] objectForKey:@"Movie"]
    insertIntoManagedObjectContext:nil
];
于 2010-12-08T08:03:15.710 に答える