2010-10-26 5 views
0

В настоящее время я разрабатываю приложение, которое в значительной степени зависит от получения веб-контента. У меня есть серия классов NSObject, которые представляют содержимое, которое я получаю в формате JSON. У меня также есть классы NSManagedObject, которые представляют мою модель Core Data, которые почти идентичны.Основные данные: хранение веб-контента перед сохранением

Вот пример класса 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)?

ответ

1

Я не уверен, если вы докопались до этого, но я предлагаю вам использовать NSManagedObject для всех объектов, и только сохраняются те, которые вы заинтересованы в.

Помните, что все ваши объекты хранятся в контексте и не сохраняются, пока вы явно не сохраните контекст. Перед этим вы можете избавиться от нежелательных вещей, а затем отправить контекст сообщение сохранения.

0

Вам не нужно вставлять управляемые объекты в контекст, если вы инициализируете их правильной информацией из вашей модели управляемых объектов. Предполагая, что вы можете получить свою модель управляемых объектов из делегата приложения, вы можете сделать примерно следующее:

NSManagedObjectModel *objectModel = [appDelegate managedObjectModel]; 
Movie *obj = [[Movie alloc] 
    initWithEntity:[[objectModel entitiesByName] objectForKey:@"Movie"] 
    insertIntoManagedObjectContext:nil 
]; 
Смежные вопросы