ios - 核心数据一对多关系

标签 ios iphone core-data

我有一个场景,其中有一个实体可以有 X 个项目,具体取决于用户添加的内容。我有另一个实体需要与第一个实体的任意数量的关系。这很简单,只需创建从第二个实体到第一个实体的一对多关系。

我遇到的问题是,如果第二个实体可以采用第一个实体中每个实体的多个数怎么办?我不确定该怎么做。

例子: 实体 A 包含:x、y、z 实体 B 可以包含(例如):3 个 x 和 7 个 y。或 x 的 8 个,y 的 7 个,z 的 2 个。一切都取决于用户在应用程序中的选择。

最佳答案

CoreData 不会让您建模(直接)关系,在这种关系中您可以多次将同一对象添加到一对多关系。

在您的情况下,您有 2 个我能想到的选项,都需要您为新的中间件关系实体建模。

假设您有实体 AB。您现在需要创建一个实体 AtoB,其中 AtoB 结构为:

关系:
a :与 A 实体的一对一关系 b :与 B 实体

的一对一关系
  1. 第一个选项将让您手动保留您喜欢的对象 B 的数量在属性 bCount 中:
    1. 每次用户将 A 链接到 B 时,您将增加现有关系的计数或创建一个具有适当的新 AtoB 对象值(value)观(谨防重复)
  2. 第二个选项是让用户在将 A 实体链接到 B 实体时添加尽可能多的 AtoB 关系(无唯一性):
    1. 需要时手动或分组获取这些项目的数量

在大多数情况下我更喜欢第一个选项。

A 实体和 B 实体将与 AtoB 实体具有一对多关系。

您可以保留从 BA 的对多关系,因为我确信它有其目的。

关于ios - 核心数据一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341163/

相关文章:

iphone - 围绕典型用法的核心数据问题

ios - 既然我正在使用 Swift 2.0,我该如何修复我的 MKOverlayRenderer?

iOS:如何将内容从 ScrollView 复制到另一个 ScrollView

ios - 如何处理 backBarButtonItem 的长标题字符串?

iphone - 如何在拒绝后重新提交 iOS 应用程序

swift - 只需要更新 NSManagedObject 的最后一条记录

core-data - 具有一对多关系的 NSSortDescriptor

iOS直接打印到网络打印机

iphone - 使用 Google Analytics/GANTracker 编译 iOS 5 应用程序时出现问题

iphone - 使用MPMusicPlayerController播放MPMediaItemCollection,如何获取播放结束时的事件