我有两个课程:GHHaiku
和GHViewController
。在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。
为什么这有什么不同?
答案 0 :(得分:2)
问题是当你说你实例化@property (nonatomic, strong) GHHaiku *ghhaiku
时。你没有。你在那里所做的一切都是申报财产。所以你有一个房产,但房产没有价值;它没有。所以self.ghhaiku
是零,你在第二个例子中毫无结果地发送消息给nil。
答案 1 :(得分:0)
尝试进行分配
self.ghhaiku.arrayAfterFiltering =[[NSArray alloc] initWithArray: [self.haiku filteredArrayUsingPredicate:predicate]];