0

ここに私のループがあります:

- (NSArray *)myArray
{
    if (!_myArray)
    {
        NSMutableArray *array = [NSMutableArray array];

        for (MyReport *report in self.helper.myReportType.reports)
        {
            [array addObject:report.nameString];
        }        
        _myArray = array;
    }

    return _myArray;
}

これはうまくいきます (明らかに、いくつかのキャスティングが行われますが、これは素晴らしいことでも望ましくないこともあります) が、確かにこれを行うためのより良い方法があります。ここでお手伝いできNSPredicateますか?(私はまだ使用NSPredicateに慣れていませんが、主にデータをフィルタリングするためのものであり、このような配列を構築するためのものではないと思いますか?)そうでなければ、別のAppleヘルパークラスを使用してこれを書き直すにはどうすればよいですか?

4

2 に答える 2

2

NSPredicateあなたが言ったように、データのフィルタリングに関するものです。これを行うためのクリーンな方法は、キー値コーディングを使用することです。これを で使用すると、各オブジェクトのメソッドがNSArray呼び出され、結果が として返されます。valueForKey:NSArray

_myArray = [self.helper.myReportType.reports valueForKey:@"nameString"];

このメソッドは自動的に変換nilされることに注意してください。NSNullより高度な KVC-Collection オペレーターの情報については、http: //nshipster.com/kvc-collection-operators/を参照してください。

于 2013-01-04T05:29:35.233 に答える
1

以下のコードを使用してください-

[self.helper.myReportType.reports valueForKey:@"nameString"];

レポート配列から nameString の配列を返します。

于 2013-01-04T05:29:28.200 に答える