2012-09-17 44 views
0

我有兩個類:GHHaikuGHViewController。在GHHaiku,我宣佈@property (nonatomic, strong) NSArray *arrayAfterFiltering;NSArray從子類訴NSArray在視圖控制器

GHViewController我實例GHHaiku作爲@property (nonatomic, strong) GHHaiku *ghhaiku;,然後用這個代碼遵循它以後:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category == %@", cat]; 
     NSArray *filteredArray = [self.haiku filteredArrayUsingPredicate:predicate]; //haiku is an NSMutableArray property of `GHViewController` 
     NSLog(@"%d",filteredArray.count); 

的的NSLog這裏產生正確的計數,116

但是,當我使用下面的代碼,

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"category == %@", cat]; 
     self.ghhaiku.arrayAfterFiltering = [self.haiku filteredArrayUsingPredicate:predicate]; 
     NSLog(@"%d",self.ghhaiku.arrayAfterFiltering.count); 

NSLog產生計數爲0.

爲什麼這有什麼不同?

+0

當調用 「'filteredArrayUsingPredicate:'」,什麼是你的兩個單獨的 「'GHHaiku'」 「'self.haiku'」 &「'GHViewController'的計數值「物體? –

+0

在這種情況下,它實際上是116 - 目前過濾器不會過濾任何東西。 (這個想法是用戶將加入計數。) –

回答

2

問題是當你說你實例化@property (nonatomic, strong) GHHaiku *ghhaiku。你沒有。你在那裏做的只是申報財產。所以你有一個財產,但財產沒有價值;它是零。所以self.ghhaiku是零,你是沒有結果地發送消息在第二個例子爲零。

+0

AH!這就是惰性實例化的地方!我現在開始明白.... –

0

嘗試做分配

self.ghhaiku.arrayAfterFiltering =[[NSArray alloc] initWithArray: [self.haiku filteredArrayUsingPredicate:predicate]];