核心数据:创建多个托管对象,但只保存一些?

时间:2010-08-26 15:36:54

标签: iphone core-data favorites

我正在尝试为我的应用编写收藏夹系统。我已经将模型转换为托管对象了。因此,想象用户会看到一个包含此类对象列表的屏幕。他们可以选择将一些保存到他们的收藏夹中,这会将它们保存在核心数据中。

问题是,当我创建所有这些模型对象时,我使用托管对象上下文。如果用户将单个节目保存到他们的收藏夹中,则会保存整个上下文,并保留每个单个实体。额外内容不会出现在他们的收藏夹中,因为添加到收藏夹会构建一个“最喜欢的”实体,该实体将被保存并指向该对象,而其他人将不会拥有该实体。但是所有其他对象都将被不必要地保存。

设计iPhone收藏夹系统的标准方法是什么?我应该将我的模型分成两个类,一个是我向用户显示的,另一个是保存到数据库的?这样我就可以在不将它们放入MOC的情况下构建我的模型。但那将是一个具有所有相同领域的重复类。

2 个答案:

答案 0 :(得分:7)

实际上并没有一种标准的方法,因为Core Data希望您保存您创建的对象。但是,如果使用以下命令创建对象:

id object = [[NSManagedObject alloc] initWithEntityDescription:entity inManagedObjectContext:nil];

他们没有可以保存的上下文。然后,对于那些你需要保存的人,你可以:

[[self managedObjectContext] insertObject:object];

然后在上下文中调用-save:,只有已设置其上下文的那些将保存。

答案 1 :(得分:-1)

在托管对象上拥有isFavorite属性会不会更容易。然后在您的收藏夹视图中,您可以根据它进行过滤?