2010-12-20 49 views
1

我有一個具有相關的多對象實體集的實體匹配。我想知道有多少組具有「set_finished」屬性爲特定匹配設置爲YES的計數。我試圖這樣做:我試圖從相關實體中獲得匹配條件的記錄數

NSPredicate * predicate = [NSPredicate predicateWithFormat:@「ANY set_finished == YES」]; NSUInteger numberOfFinishedSets = [[[match valueForKeyPath:@「sets」] filteredArrayUsingPredicate:predicate] count];

第二行與此錯誤崩潰,我不明白。任何人都可以爲我闡明這一點嗎?謝謝。

2010-12-20 13:17:13.814 DartScorer [2154:207] *終止 應用由於未捕獲的異常 'NSInvalidArgumentException' 的,原因是: 「 - [_ NSFaultingMutableSet filteredArrayUsingPredicate:]: 無法識別的選擇發送到實例 0x617fb20'

回答

0

您應該使用filteredSetUsingPredicate:而不是filteredArrayUsingPredicate,因爲對象是一個集合,而不是一個數組。

+0

謝謝。當然!我不確定我是如何錯過的!多少次我可以閱讀某些內容並且沒有看到明顯的錯誤,這真是太神奇了。 – lps 2010-12-20 13:58:23

-1

嘗試包裹串是用單引號 「... 'YES'」

(假設該字段包含字符串'YES'和'NO',而不是1 | 0)

0

_NSFaultingMutableSet是一種空集(如果您將打印設置,你會看到Xcode中打印出實體名稱,但不是它的內容確實是因爲:

斷裂作用降低了內存 量您的應用程序消耗的故障是 表示的關係的佔位符對象,表示還沒有得到充分 實現 管理對象,或集合對象 :

管理對象故障是一個插件tance 的適當的類,但其 持久變量尚未 初始化。關係錯誤是 表示關係的集合類的 子類。錯誤 允許Core Data將對象圖的邊界放在 上。因爲沒有實現故障 ,所以被管理對象故障 消耗較少的內存,並且與故障有關的被管理對象不是 ,而是根本不需要在內存 中表示。

我認爲你應該創建一個Set來保存你想要過濾的對象,然後過濾創建的數組。

希望它有助於 SHANI

0
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(ANY set_finished == YES)[email protected]"]; 
NSUInteger numberOfFinishedSets = [[match valueForKeyPath:@"sets"] filteredSetUsingPredicate:predicate]; 

這將只是返回多少對象也有真實的檢索從磁盤中的對象和計數他們,而不是計數。

+0

你試過這個嗎? filteredSetUsingPredicate返回一個集合,而不是一個計數 – 2014-07-01 01:19:20

相關問題