2014-04-04 104 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

我不知道!像魅力一樣工作。我想這就是當你試圖太聰明時會發生的事情:) –