代码之家  ›  专栏  ›  技术社区  ›  Seamus Campbell

nspredicate是否引用一对多关系中的多个字段?

  •  6
  • Seamus Campbell  · 技术社区  · 14 年前

    我正在使用一个sqlite持久存储。我有一个 NSManagedObject Den 一对多关系 Bear . 有几个字段:

    Bear:
        breed
        color
        age
        ...
    

    当我建房的时候,把我的 兽穴 对象,我可以筛选到与 具有特定字段值:

    NSPredicate *hasGrizzlyPred = [NSPredicate predicateWithFormat:@"ANY Bear.breed == 'grizzly'"];
    

    或者我可以很容易地搜索 兽穴 它有一只棕熊:

    NSPredicate *hasBrownBearPred = [NSPredicate predicateWithFormat:@"ANY Bear.color == 'brown'"];
    

    但是有什么方法可以找到 兽穴 有一只棕熊和一只灰熊吗?我认为以下是合法的,但不正确:

    // Not quite right: search for a den with a brown bear AND a grizzly
    NSPredicate *hasBrownAndGrizzlyPred = [NSPredicate predicateWithFormat:@"ANY Bear.color == 'brown' AND ANY Bear.breed == 'grizzly'"];
    
    1 回复  |  直到 14 年前
        1
  •  6
  •   Barry Wark    14 年前

    你可以用 SUBQUERY 谓词表达式。在查询带有熊的巢穴的情况下(其中 Den 与…有一对多关系 Bear 命名 bears )既有棕色又有灰色:

    [NSPredicate predicateWithFormat:@"SUBQUERY(bears, $b, $b.color=='brown' AND $b.breed=='grizzly').@count > 0"];