1

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

我会为此使用核心数据

问题描述: 假设我们在系统中有两个对象类型(类),Location 和 Event。它们是从 web 服务中检索的,不需要持久化。

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

其他要求:

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

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

4

1 回答 1

1

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

您可以在整个应用程序中将这些用于实体(NSManagedObject 的子类)。无论如何,您也许应该保留它们(以便在互联网出现故障时它们可用并允许用户继续使用它们)。收藏的实例可以用 BOOL 属性标记。

不过,有一个设计考虑:也许您想在 Location 和 Event 之间创建一个可选的关系。某些事件可能与特定位置相关联,您也将需要此信息。使用 Core Data,这真的很容易做到。

于 2013-06-20T10:09:51.190 回答