2012-04-18 12 views
0

NSArrayで特定の長さの文字列を取得したいとします。NSArrayから特定の長さの文字列を取得するには?

配列には多くの要素があり、高速列挙を使用したくありません。

可能な方法はありますか?

+0

どんなにあなたがそれを行う方法あなたが「アンダーカバー」と同じ機能を取得します - 配列を反復処理し、そのために個々の文字列をテスト長さfilteredArrayWithPredicateのようなものを使用すると、単純なやり方で数回のサイクルを保存したり、予測が遅くなったり遅くなったりすることがあります。 –

+0

(もちろん、文字列の長さのリストを別々に保存して検索することもできますが、リストを作成する際のオーバーヘッドがあります) –

答えて

2

これは魔法のように動作しません:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.length == %d", lenght]; 
NSArray *filtered = [array filteredArrayUsingPredicate:predicate]; 
2

あなたが何をしていても、気付かなくても速い列挙を使用します。しかし、NSPredicateオブジェクトとfilteredArrayWithPredicateメソッドの使用を検討しましたか?

0
NSArray *yourArray = [[NSArray alloc] initWithObjects:@"Apple, Orange, Grapes, Cherry, nil"]; 

for(NSString *element in yourArray){ 

    if(element.length==yourLength){ 
     [filteredArray addObject:element]; 
    } 
} 

NSLog(@"Filtered array now contains the elements with length %d", yourLength); 
NSLog(@"Filtered array--%@", filteredArray); 
+0

ねえ、私は速い列挙を使いたくないと言いました。 –

+0

@ borrrdenの答えを参照してください。私の答え(あなたが受け入れたもの)でも、フードの下で高速列挙を使用しています。 –

関連する問題