NSFetchRequest和NSPredcate,数组比较和匹配



A类包含与C类的toMany关系

B类包含与C类的toMany关系

我正在寻求设计一个NSFetchRequest,它基于与类C的关系在类A和类B 的实例之间至少有一个公共对象的概念来查询对象

我缺乏合适的语言来描述这个概念,但我觉得它必须完全在NSPredcates 的某个方案中实现

因此,如果对象A(A-0(与对象C(C-2,C-4(相关

并且对象B(B-0(与对象C(C-0、C-4(相关

然后谓词认为匹配

但如果对象B(B-0(与对象C(C-0,C-1(相关

那么这将不被视为匹配

我的非工作谓词开始时是这样的

[NSPredicate predicateWithFormat:@"obja.objectsC IN %@", objb.objectsC];

CoreData只是不允许这样做,但希望将其作为正确答案的参考框架

  1. 您不能简单地匹配数组中的数组,因为您只能匹配阵列中的对象
  2. 这种情况的解决方案是使用SUBQUERY。我们将迭代obja.objectsC中的所有对象以匹配objb.objectsC中一个对象。之后,我们计算所有引用并与零进行比较

[NSPredicate predicateWithFormat:@"SUBQUERY(obja.objectsC, $objA, $objA IN %@).@count >0", objb.objectsC];

最新更新