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 实体都有相同的字段!对于指定公共字段的抽象父实体来说,这将是一个很好的用例,因此您不必复制它们。
我正在尝试创建核心数据模型,但作为核心数据新手,我不清楚如何使用关系来达到我的目的。
基本上我需要存储一个看起来像这样的对象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 实体都有相同的字段!对于指定公共字段的抽象父实体来说,这将是一个很好的用例,因此您不必复制它们。