代码之家  ›  专栏  ›  技术社区  ›  M. Ryan

NSFetchRequest和NSPredicate,数组比较和匹配

  •  1
  • M. Ryan  · 技术社区  · 7 年前

    A类包含与C类的任意关系

    B类包含与C类的任意关系

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

    我缺乏恰当的语言来描述这个概念,但我觉得它必须完全在某种预测方案中是可能的

    因此,如果对象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 回复  |  直到 7 年前
        1
  •  2
  •   byzyn4ik    7 年前
    1. 不能简单地匹配数组中的数组,因为只能匹配数组中的对象。
    2. 这种情况的解决方案是使用子查询我们将迭代obja.objectsC中的所有对象,以匹配objb.objectsC中的一个对象之后,我们计算所有引用并与零进行比较。

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