我在使用CoreData排序“join”实体时遇到问题。 我做了这样的模型:
逻辑如下:实体A有一个项目列表。用户可以从A中选择一个或多个项目并将它们放在实体C中。这样可以正常工作。但结果集变得未排序(逻辑上)。所以我实现了一个像这样的“join”实体B:
所以现在结果可以按实体B中的字段日期排序,实体B是实体A和B之间的“连接”。
但在这里我感到困惑。当我将新项目插入B时,是否还需要将它们添加到C和A中,或者它们是否会自动插入关系?
编辑 - 解决方案:
答案 0 :(得分:1)
当您调用其中一个CoreData生成的addXXXItemsObject
方法,或设置类似b.c = myCInstance;
的关系属性时,它将为您设置一个关系。
因此,您可以通过多种不同方式设置B对象。首先设置c <--> b
关系:
b.c = instanceOfC;
// or
[c addBItemsObject:b];
然后是b <--> a
关系:
b.a = instanceOfA;
// or
[a addBItemsObject:b];
最简单的可能只是为每个版本使用第一个版本:
b.c = instanceOfC;
b.a = instanceOfA;
另外,看看你的截图,看起来你需要在你的人际关系中做出一些结论。
编辑:对此进行了大约5次编辑,以使其更加合理。