0

我目前正在开发一个严重依赖于检索网络内容的应用程序。我有一系列 NSObject 类,它们代表我以 JSON 格式检索的内容。我还有代表我的核心数据模型的 NSManagedObject 类几乎相同。

这是我用来保存我的网页内容的 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 回答