2014-04-04 156 views
0

我的CoreDate DBNSPredicate与嵌套子查询失败编译(核心数据)

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

相关的部分,我试图让所有谁拥有在租赁当用户有一个活跃的成员一个健身房类别。 我有一个数组与所有用户的活动成员身份证号(每个会员在数据库中有一个UID) 我想下面的查询无法编译,我甚至决定它进入子字符串,以确保没有错误:

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

编译器对于问题的根源非常无益。我已经重写了这个谓词超过了10次,任何事情都可以找出我错过了什么?

回答

1

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

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

我不知道!像魅力一样工作。我想这就是当你试图太聪明时会发生的事情:) –