Swift:镜像 API 视图模型的核心数据模型关系

Swift: Core Data model relationships to mirror API view model

我正在尝试创建核心数据模型,但作为核心数据新手,我不清楚如何使用关系来达到我的目的。

基本上我需要存储一个看起来像这样的对象class(需要更多的值但这是结构),目的是下面基本上是我在获取数据时使用的模型来自特定的 API,但我正在尝试实现离线功能,因此基本上需要在核心数据中镜像此模型):

class SheetModel {

     uplift: String
     date: String
     time: String
     density: String
     discrepancy: String
     id: String

  Mass {
      unit:  String
      display: String
      unitName: String
   }
  Density {
      unit:  String
      display: String
      unitName: String
   }
  Volume {
      unit:  String
      display: String
      unitName: String
   }
 }

我不清楚如何创建一个数据模型来让我存储类似上面的内容。我的(可怜的)尝试如下:

我知道这里的关系是完全错误的,但想不通我应该在这里做什么。所以很明显,体积、质量、密度实体都应该属于存储隆起、日期等属性的同一个 NSManagedObject。

你误解了 "parent entity" 在 CoreData 中的意思!这就是您指定 inheritance 而不是 containment 的方式。因此,如果您有一个 Circle 实体,它的父实体应该是一个更通用的 Shape 实体。

您需要清除那些父实体设置,并将 "relationships" 添加到您的实体。每个 mass/density/volume 实体都应该有一个关系,其中目标是 StoredRefuelSheet,删除规则是 Nullify,类型是 To One。这意味着您不能在两个 sheet 之间共享一个质量,并且您可以在不删除其拥有的 sheet 的情况下删除一个质量。您还应该设置反向关系,因此 sheet 将与目标 Mass、删除规则 Cascade 和类型 To One 具有 mass 关系。这意味着如果您删除 sheet 其包含的质量也会被删除。

在那之后,您 实际上有机会使用父实体:您的 mass/density/volume 实体都有相同的字段!对于指定公共字段的抽象父实体来说,这将是一个很好的用例,因此您不必复制它们。