SwiftUI和CloudKit-CoreData多对多关系

时间:2020-08-24 10:25:50

标签: swift core-data swiftui cloudkit

我是Swift UI的新手,并且第一次与CoreData和CloudKit一起工作也很不错。我的很多问题都可以通过现有教程来回答,或者类似的已经回答过的问题。但是我找不到CoreData中多对多关系的绝佳资源。

在我的项目中,用户可以通过按一个按钮来保存标记/时间戳,这会触发将数据保存在CoreData中的功能。在用户可以保存时间戳的情况下,通过按一下按钮完成录制时,将记录保存到CoreData的功能就会结束。我的目的是,记录将保存并包括所有已创建和已保存的标记/时间戳,因此用户可以在项目/记录中单击其历史记录,并获取此记录的所有标记/时间戳。

到那时,我可以保存并创建标记并进行记录,但不能将它们彼此链接。

我如何最简单的方法-与多对多的关系?我的代码中多对多关系如何工作?

我非常感谢您的帮助和想法!

罗伯特 PS:在phto上,您可以看到我已经尝试创建Relationships,但是无法使用函数创建它们。

Data Model

Functions

Relationships

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您的UsedMarker代表使用特定MarkerItem的特定timestamp和特定Recording。因此,我将从UsedMarkerRecording的关系建模为一对一。

根据您当前的模型,UsedMarker具有颜色,名称和图标的属性,您将其描述为来自MarkerItem实体。我会避免这种重复,而将这些属性替换为从UsedMarkerMarkerItem的一对一关系。

当它们是to-one时,很容易在代码中定义关系。如果您有一个Recording对象,例如currentRecording,并且用户在给定的时间戳上添加了一个特定的MarkerItem,例如chosenMarker,则可以创建一个新的{{ 1}}中的分配关系:

UsedMarker