NSArray来自视图控制器中的子类v.NSArray

时间:2012-09-17 03:57:50

标签: iphone objective-c xcode

我有两个课程:GHHaikuGHViewController。在GHHaiku中,我声明了@property (nonatomic, strong) NSArray *arrayAfterFiltering;

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。

为什么这有什么不同?

2 个答案:

答案 0 :(得分:2)

问题是当你说你实例化@property (nonatomic, strong) GHHaiku *ghhaiku时。你没有。你在那里所做的一切都是申报财产。所以你有一个房产,但房产没有价值;它没有。所以self.ghhaiku是零,你在第二个例子中毫无结果地发送消息给nil。

答案 1 :(得分:0)

尝试进行分配

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