1. ホーム
  2. objective-c

[解決済み] Objective-CでNSArrayを新しいNSArrayにフィルタリングする。

2022-08-07 02:48:20

質問

私は NSArray があり、新たに NSArray を、元の配列から一定の基準を満たしたオブジェクトで作成したい。この基準は、ある関数が BOOL .

を作成することができます。 NSMutableArray を作成し、ソース配列を繰り返し、フィルター関数が受け入れるオブジェクトをコピーして、そのイミュータブルバージョンを作成することができます。

もっと良い方法はないでしょうか?

どのように解決するのですか?

NSArray そして NSMutableArray は、配列の内容をフィルタリングするためのメソッドを提供します。 NSArray filteredArrayUsingPredicateを提供します。 これは、指定された述語にマッチする受信機内のオブジェクトを含む新しい配列を返します。 NSMutableArray filterUsingPredicateが追加されました。 これは、受信機の内容を指定された述語と照らし合わせて評価し、 一致するオブジェクトのみを残すものです。これらのメソッドは、以下の例で説明されています。

NSMutableArray *array =
    [NSMutableArray arrayWithObjects:@"Bill", @"Ben", @"Chris", @"Melissa", nil];

NSPredicate *bPredicate =
    [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'b'"];
NSArray *beginWithB =
    [array filteredArrayUsingPredicate:bPredicate];
// beginWithB contains { @"Bill", @"Ben" }.

NSPredicate *sPredicate =
    [NSPredicate predicateWithFormat:@"SELF contains[c] 's'"];
[array filteredArrayUsingPredicate:sPredicate];
// array now contains { @"Chris", @"Melissa" }