0

我有两个班级: 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。

为什么这有什么不同?

4

2 回答 2

2

问题是当你说你实例化@property (nonatomic, strong) GHHaiku *ghhaiku. 你没有。你所做的就是声明财产。所以你有财产,但财产没有价值;它是零。nil 也是如此self.ghhaiku,在您的第二个示例中,您向 nil 发送消息是徒劳的。

于 2012-09-17T04:06:18.857 回答
0

尝试做分配

self.ghhaiku.arrayAfterFiltering =[[NSArray alloc] initWithArray: [self.haiku filteredArrayUsingPredicate:predicate]];
于 2012-09-17T04:08:17.710 回答