2011-08-29 46 views
1

我有表之間的多對多關係,並填充一個tableView與活動。 對於我用戶一個簡單的NSPredicate這樣的:CoreData - NSPredicate結果,如果關係有數據

request.predicate = [NSPredicate predicateWithFormat:@"deleted == %@", [NSNumber numberWithBool:NO]]; 

enter image description here

我該怎麼做才能只顯示附加了會員活動?

我認爲在NSPredicate中我必須做一些計數,以便只有計數> 0的活動纔會返回。是這樣嗎? 如何?

(我在coredata新手...)

感謝,

RL

回答

3

你需要一個子查詢添加到您的謂詞作用於CompanyActivity實體如下:

[[NSPredicate predicateWithFormat:@"deleted == %@" && (0 >= SUBQUERY(Members, $sub, $sub.deleted == %@)[email protected])", [NSNumber numberWithBool:NO] [NSNumber numberWithBool:NO]]; 

謂詞的第一部分返回未被刪除的對象,第二部分與子查詢相關將負責檢索所有這些CompanyActivity o其成員未被刪除的對象。

+0

嗨,感謝您的提示,但它引發了一個異常:***終止應用程序由於未捕獲的異常'NSInvalidArgumentException',原因:'不能在子查詢中有非關係集合元素SUBQUERY(Members,$ sub ,$ sub.deleted == 0)' –

+1

找到了!而不是會員,我應該使用hasMembers。 –

+0

是的,的確,它應該是關係的確切名稱。對於那個很抱歉。 –