假设我有一个包含数千个对象的实体 A。这些对象中的每一个都与另一个实体 B 具有一对多的关系。实体 B 的一个属性是“部分”。
我想要实体 A 的所有对象中 B 的所有不同部分的 NSSet。
如果我只希望 B 的不同部分用于 A 的一个对象,我会使用:
[A valueForKeyPath"B.section"];
但是有没有一种有效的方法来为 A 的所有对象获取此信息?在我看来,获取 A 的所有对象然后迭代这个数组,执行上述操作是“太多的工作”。当然可以轻松完成,但我希望我的核心数据天真仅仅意味着我不知道如何在一行中完成此操作。
如何做到这一点?
谢谢!
编辑要求澄清:
假设 Person 实体与 Vehicles 实体具有一对多关系。
假设 Vehicles 实体有一个属性“color”。
我想要属于所有人的所有车辆的所有颜色的 NSSet。
Best Answer-推荐答案 strong>
如果我理解正确,并假设 A-->B 关系具有反向 B-->A 关系,名为 a ,您的问题可以表述为:All B.section 的不同值,其中关系 B.a 不是 nil。这将为与某些 A 关联的每个 B 获得 B.section 的每个不同值。
在这种情况下,您需要以下内容:
// Fetch B
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName"B"];
// Fetch B that's related to an A
NSPredicate *predicate = [NSPredicate predicateWithFormat"a != nil"];
[request setPredicate:predicate];
// Fetch distinct values of "section", return values as NSDictionary
[request setResultType:NSDictionaryResultType];
[request setReturnsDistinctValues:YES];
[request setPropertiesToFetch["section"]];
执行它,你会得到一个 NSDictionary 数组。字典有一个名为 section 的键,对应于 B.section 。仅包含不同的值。
关于ios - 如何获取所有对象A的一对多关系B的所有属性的NSSet,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18477540/
|