2010-08-06 24 views
1

我正在使用NSFetchedResultsController,並且我有一個問題來查詢父屬性中的計數。
如何計算NSFetchedResultsController中父實體的列表大小

假設以下數據模型'Group','Category','Item'。
- 項目:所有項目都屬於「類別」
- 類別:「類別」可能屬於某種「集團」
- 組:「集團」具有零到N「分類」

我想要搜索沒有任何分類的所有項目。
我的代碼如下:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 
... 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(([email protected] == 0) || category.categoryId == %@)", categoryId]; 
... 

但是, 「category.groups @算。」 並沒有在這裏工作。 (它運行良好NSFetchedRequest)
我該如何解決這個問題。請幫幫我;;

謝謝。

回答

0

你打開2個支架,並關閉只有一個:

[email protected]"(([email protected] == 0) || category.categoryId == %@"... 
+0

糟糕!這只是我的打字錯誤。但是這個問題沒有解決。無論如何感謝您的回覆。 – likejy 2010-08-06 16:37:36

1

的關係也可以是零。

((([email protected] == 0) || category.groups == nil) || category.categoryId == %@) 

的代碼,當你對一個SQLite後端運行可以比你預期的Objective-C直接的裏面有什麼不同謂詞的內部的分辨率。當你遇到這樣的奇怪事情時,打開sql調試以查看底層sql是什麼以及相應地調整謂詞會很有幫助。

+0

感謝您的回覆。但代碼崩潰...「終止應用程序由於未捕獲的異常」NSInvalidArgumentException「,原因:'對多密鑰不允許在這裏'」。順便說一下,如何打開sql調試? – likejy 2010-08-06 19:59:10

+0

物品是否與類別有一對一的關係?您可以通過閱讀Apple文檔和[在PragProg上發佈我的文章]打開調試(http://forums.pragprog.com/forums/90/topics/4649)。 – 2010-08-06 20:12:38