gpt4 book ai didi

ios - 两个 CoreData 实体之间是否可以有多个 "to-many"关系?

转载 作者:可可西里 更新时间:2023-11-01 05:42:15 25 4
gpt4 key购买 nike

我的模型有一个实体“Filter”和一个实体“Color”。我想在它们之间有两个“对多”关系:“背景”和“前景”。 (即每个“过滤器”都包含一个背景色数组和一个前景色数组,均为“颜色”类型)。

我有两个问题。首先,当我建立关系时,“Color”的逆函数只能有一个值(我猜这意味着我不能做我想做的事)。其次,我无法弄清楚如何创建谓词来仅获取背景或仅获取前景。我假设以下将返回所有合并在一起的内容(如果它有效的话):

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Color"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"filter == %@", self];

我打算通过将 Color 转换为两个 Foreground 和 Background 实体来解决这个问题,但我不想在不理解为什么单个实体不起作用的情况下这样做。我在这里遗漏了什么吗?

注意:这对我来说显然不直观。我再次遇到了这个确切的问题,但这次我没有使用谓词,所以我没有立即发现问题。我有一个非常相似的设置,但是当我试图删除一个 child 时,它最初会消失,但是当我重新启动我的应用程序时,它会不止一次地重新出现。我移除的 child 越多,我得到的 child 就越多。我最终注意到相同的 child 在两个关系数组中,当我查看模型的图形版本时,只有一个关系有一个箭头连接到 child 。最后,我记得我以前遇到过这个问题!我不太明白发生了什么,但显然这两个子“数组”以一种奇怪的方式合并在一起。

最佳答案

是的。

关于多对多关系的理论

假设您有实体 CHILD,它是男孩或女孩。每个 child 都可以拥有一组(对多)他们所有的 sibling 。但是每个 child 也可以有两套(对多)他们所有的 1:兄弟和 2:姐妹。

“ sibling ”的反向关系是“isSiblingTo”(或 sibling )。而“兄弟”和“姐妹”的反面是“isBrotherTo”和“isSisterTo”。

这非常简单,因为两个实体都相同。

换句话说,我是一个拥有一套蜡笔和一套玩具的 child 。我可能在这两个集合中都有我的红色蜡笔,即我必须与它建立多对多关系。

这一切都归结为红色蜡笔既是我的蜡笔又是我的玩具。与上面的 sibling 示例一样, child 的兄弟既是他们的 sibling ,他们的 sibling 既是他们的 sibling 又是他们的姐妹。

更新:

您不需要成为这两种关系的一部分。你可以有一个没有 sibling 关系的 child ,但有 sibling 关系,其他 child 与他们有相反的关系(这更接近你的颜色+过滤器的例子)

应用于您的示例

所以,如果你有它的用处,它是可行的。只要用日常语言思考它们的关系,将相反的设置为 isForegroundColorTo 和 isBackgroundColorTo。

具有多对多关系的数据模型 data model with multiple to-many relations

颜色模型定义 color model definition

过滤器模型定义 filter model definition

关于ios - 两个 CoreData 实体之间是否可以有多个 "to-many"关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10561510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com