使用 Swift 和 Core Data 的多对多附加数据

Posted

技术标签:

【中文标题】使用 Swift 和 Core Data 的多对多附加数据【英文标题】:Many To Many with additional data using Swift and Core Data 【发布时间】:2018-01-21 12:30:10 【问题描述】:

我用 SQL Server 做了很多应用程序(两层应用程序),这是我在 ios 中的第一个具有核心数据的应用程序。

我试图弄清楚如何与其他数据建立多对多关系。让我用一个简单的例子来解释一下:

第一个实体称为 List(引用产品列表),它有一个属性 listName。

第二个实体称为产品(指产品),它有一个属性productname。

每个“产品”可以在多个“列表”中,每个“列表”包含多个“产品”。

Data Model

Xcode 已经自动创建了连接表:

SQLLITE

我现在的问题是我不知道如何为这个连接表添加一个“数量”列。我的主要目的是说:

在列表 1 中,我有 4 个产品 1

list2 我有 3 product1

list2 我有 4 个 product2

...

在 SQL Server 中太简单了,因为我自己创建了这个连接表并添加了其他数据,但我不知道如何在核心数据中做同样的事情。

【问题讨论】:

使用中间实体(即显式连接表)。例如,请参阅here。 谢谢。很清楚。 【参考方案1】:

如果您使用Many-2-Many(没有任何附加属性),Core Data 会隐藏关联表。这意味着,以相反的方式,您需要自己创建一个相关表。你可以这样做,如果你在 Core Data 中创建一个新实体,它应该与其他两个实体具有 2-One 关系。

没有额外的属性:

Entity1 Entity2(关联表是隐藏的,但存在)

带有额外属性:

Entity1 Entity2

【讨论】:

这意味着创建多对多关系的传统方式在核心数据中仍然有效。让我感到困惑的是关于自动处理连接表的 Apple 文档。 是的,它会自动处理连接表,但前提是没有额外的属性。

以上是关于使用 Swift 和 Core Data 的多对多附加数据的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地迭代 NSSet (Objective-C) - Core Data 中的多对多关系表示?

对于我的多对多关系,Core Data 获取速度非常慢?

使用流利的 api EF Core 5 的多对多关系

Asp.net Core中的多对多实现问题[重复]

EF Core中的多对多映射如何实现?

EF Core 5.0 - 更新 ASP.NET Core Web API 中的多对多实体