0

私には2つのクラスがあります: 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ですが、2番目の例ではnilにメッセージを無駄に送信しています。

于 2012-09-17T04:06:18.857 に答える
0

割り当てを試してください

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