将不同的对象(类型)保持为单个对象 - CoreData - (收藏示例)

时间:2013-06-20 09:43:58

标签: ios objective-c core-data

我的问题是如何正确实现这一点并设计良好。

我会使用核心数据

问题描述: 假设我们在系统中有两个对象类型(类),即位置和事件。它们是从webservice中检索出来的,没有必要坚持下去。

这两种对象中的任何一种都可以添加(保存)到收藏夹中,并且应该在本地保存。

其他要求:

  • 显示和管理收藏夹 - 比如说在FavoritesViewController中(我会在这里使用NSFetchedResultController
  • 收藏夹的显示(单元格)根据喜欢的类型(位置或事件)不同
  • 在位置/事件详细信息视图控制器中,将有一个操作要添加到收藏夹/从收藏夹中删除,并且应根据收藏夹设置该操作的状态
  • 将来,它可以是另一种可以添加到收藏夹的对象类型(例如,Drink)。

我对实现这一目标的最佳方式感到困惑。我应该将位置和事件直接存储为单独的实体(模型对象),并以某种方式在单个提取中检索它,以获取和管理收藏夹列表。或者,也许使用接口/协议(例如Favorable),并创建和存储Favorite对象,并且可以添加到收藏夹的每个对象应该实现有利并且将转换为Favorite对象,但在这种情况下,它将限制收藏夹仅限于Favorite对象公开的属性。

1 个答案:

答案 0 :(得分:1)

您应该使用这两个实体创建一个简单的Core Data模型。这是非常直截了当的。您的表视图将具有两种类型的单元格(具有不同的标识符),可根据需要显示数据。

您可以在整个应用中使用这些实体(NSManagedObject的子类)。无论如何,您应该坚持使用它们(因此,如果互联网出现故障并允许用户继续使用它们,则可以使用它们)。最喜欢的实例可以用BOOL属性标记。

但需要考虑一个设计因素:您可能希望在Location和Event之间创建可选关系。某些事件可能与特定位置相关联,您也需要此信息。使用Core Data,这很容易做到。