2012-09-13 17 views
1

我有一個核心數據對象A.核心數據得到乙對象從一個目的,其中B.cObjects是nil

對象A包含對象B的陣列 - 像A.bObjects。對象B包含一個對象C的數組 - 如B.cObjects

如何從對象A獲得所有對象B,其中B.cObjects爲零?

我可以解決此類似::)

NSMutableArray *array = [[NSMutableArray alloc] init]; 
for(B *b in A.bObjects) 
{ 
    if([b.cObjects count] == 0) 
     [array addObject:b]; 
} 

但我認爲它會佔用大量的資源,如果我想有很多的對象B的,我不喜歡我的解決方法

任何想法?

回答

1

我相信你可以使用,如果你只是想從一個特定的A有空cObjects的所有Bs。

NSPredicate* predicate = [NSPredicate predicateWithString:@"[email protected] == 0"]; 
NSArray* emptyCObjects = [A.bObjects filteredArrayUsingPredicate:predicate]; 

如果你想全部來自所有具有空cObjects AS的燒烤,結合起來,與一個NSFetchRequest。

不是100%肯定哪個會更有效,但如果我冒險猜測,我會說使用謂詞和KVC,因爲我相信蘋果在引擎蓋下做了一些優化。另外它的代碼行數很少whi

+0

非常感謝。在我的情況下,你忘記了過濾對象A.所以在我的情況下,謂詞將是:NSPredicate * predicate = [NSPredicate predicateWithFormat:@「(self.A ==%@)和(cObjects。@ count == 0)」,一個]; – devgeek

+0

我正在過濾使用該謂詞的A.bObjects,因此它應該產生與您的代碼相同的結果。 – jin

+0

現在我明白了。是的,你的解決方案更好。謝謝。 – devgeek

相關問題