【问题标题】:NSPredicate with nested subqueries failing to compile(core data)带有嵌套子查询的 NSPredicate 无法编译(核心数据)
【发布时间】:2014-05-16 19:24:43
【问题描述】:

CoreDate 数据库中我的相关部分

Category<-->>Subcategory<-->>Gym<<-->>Membership

我正在尝试获取至少拥有一个用户拥有活跃会员资格的健身房的所有类别。 我有一个包含所有用户活动会员 uid 的数组(每个会员在数据库中都有一个 uid) 我正在尝试以下无法编译的查询,我什至将其决定为子字符串以确保不出错:

NSString *shopsSubquery = [NSString stringWithFormat:@"(SUBQUERY($y.programs,$z, $z.uid IN %@).@count > 0)",activeProgramsUIDsArray];
NSString *subcategorySubquery = [NSString stringWithFormat:@"(SUBQUERY($x.gyms,$y, %@).@count > 0)",shopsSubquery] ;
predicate = [NSPredicate predicateWithFormat:@"(SUBQUERY(subcategories, $x, %@).@count > 0)", subcategorySubquery]; 

编译器对于问题的根源非常无助。我已经重写了这个谓词超过 10 次,有什么能弄清楚我遗漏了什么吗?

【问题讨论】:

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


    【解决方案1】:

    混合使用 stringWithFormatpredicateWithFormat 容易出错,因为引用 和转义规则不同。这可能有效(未经测试!):

    [NSPredicate predicateWithFormat:@"SUBQUERY(subcategories, $x, SUBQUERY($x.gyms, $y, ANY $y.programs.uid IN %@).@count > 0).@count > 0", activeProgramsUIDsArray];
    

    【讨论】:

    • 我不知道!像魅力一样工作。我想这就是当你试图变得太聪明时会发生的事情:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2021-05-28
    • 2013-01-12
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多