嵌套子查询无法编译的NSPredicate(核心数据)

我的相关部分的CoreDate DB

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

我试图让所有拥有至less一个健身房的用户拥有活跃会员资格的类别。 我有一个数组与所有用户的活跃成员资格uid(每个成员资格都有一个在数据库中的uid)我想下面的查询不能编译,我甚至把它确定为子string,以确保没有错误:

 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次,什么都可以弄清楚我错过了什么?

混合stringWithFormatpredicateWithFormat容易出错,因为引用和转义规则是不同的。 这可能工作(未经testing!):

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