【问题标题】:NSFetchRequest and NSPredicate, array comparison and matchingNSFetchRequest和NSPredicate,数组比较和匹配
【发布时间】:2018-12-28 02:31:38
【问题描述】:

A 类包含与 C 类的 toMany 关系

B 类包含与 C 类的 toMany 关系

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

我缺乏合适的语言来描述这个概念,但我觉得它必须完全在 NSPredicates 的某些方案中是可能的

所以如果对象 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 根本不允许这样做,但希望将其作为参考框架来对照正确答案可能是什么。

【问题讨论】:

    标签: ios objective-c core-data nspredicate nsfetchrequest


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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多