Ios 一个不同含义实体的核心数据模型设计

Ios 一个不同含义实体的核心数据模型设计,ios,core-data,Ios,Core Data,我有一个服务器API,它在3个不同的端点下返回相同的项对象: /新的/ /推荐/ /图书馆/ 同一项目可能同时出现在新列表和推荐列表中 我需要以某种方式跟踪哪些项目来自哪个端点,将它们显示为3个不同的屏幕,同时在数据库中维护一个大的项目池。什么是一个好的模型?您可以进行一些超规范化,但如果您认为这是仅有的三种分类,您可以将它们添加为实体的布尔字段,并根据每个字段来自哪个端点将其标记为选中。以下是一些步骤: 从每个端点下载项目 按实体的服务器ID查找核心数据中的每个项目。如果该实体在核心数据中

我有一个服务器API,它在3个不同的端点下返回相同的项对象:

  • /新的/
  • /推荐/
  • /图书馆/
同一项目可能同时出现在新列表和推荐列表中


我需要以某种方式跟踪哪些项目来自哪个端点,将它们显示为3个不同的屏幕,同时在数据库中维护一个大的项目池。什么是一个好的模型?

您可以进行一些超规范化,但如果您认为这是仅有的三种分类,您可以将它们添加为实体的布尔字段,并根据每个字段来自哪个端点将其标记为选中。以下是一些步骤:

  • 从每个端点下载项目
  • 按实体的服务器ID查找核心数据中的每个项目。如果该实体在核心数据中不存在,请创建它
  • 使用从服务器记录中获得的内容设置实体字段
  • 如果它来自“new”端点,则将“new”布尔字段设置为YES。如果从“推荐”,则将“推荐”布尔字段设置为“是”,以此类推
  • 保存实体
  • 在每个视图中执行fetch时,只需将谓词设置为以下内容之一:

    [NSPredicate谓词格式:@“new=1”]

    [NSPredicate predicateWithFormat:@“推荐=1”]


  • 谢谢规范化的想法是什么?要规范化,您需要创建另一个名为“categories”的实体,并为每个实体添加一个新行——在您的示例中是“new”、“recommended”或“library”。然后,在未来,你可以添加其他,比如说,如果你还有另一个终点,比如“特色”。然后在核心数据中创建主实体和该类别实体之间的关系。这种关系将是多对多的,因为您希望每个项目都有一条记录。它将起到分组机制的作用。如果您的类别是静态的,那么规范化就太过分了,但是,如果它们可能会发生变化,那么规范化它们是有意义的。