2013-06-13 7 views
18

をフラット化:私はこのような配列持つNSArrayの

array: (
    (
     "http://aaa/product/8_1371121323.png", 
     "http://aaa/product/14_1371123271.png" 
    ), 
    (
     "http://aaa/product/9_1371121377.png" 
    ) 
) 

をし、私はそれを行うことができますどのようにこの

array: (
    "http://aaa/product/8_1371121323.png", 
    "http://aaa/product/14_1371123271.png", 
    "http://aaa/product/9_1371121377.png" 
) 

のような1つから別の配列を作成する必要がありますか?すべてのオブジェクトを組み合わせて、文字列を使って区切ることは可能ですか?

答えて

5

サンプルコード含まれています

NSMutableArray *mainArray = [[NSMutableArray alloc] init]; 
for (int i = 0; i < bigArray.count ; i++) 
{ 
    [mainArray addObjectsFromArray:[bigArray objectAtIndex:i]]; 
} 
NSLog(@"mainArray :: %@",mainArray); 
+0

NSMutableArrayを使用していますか?)最後に[[NSArray alloc] initWithArray:...] – Sk0prion

+0

@ Sk0prion:オペレータが後で配列に何かを追加するまでNSMutableArrayを使用する必要はありません。 – Bhavin

+0

それを得ました...変更点に注意してください。 – user23790

-1
NSMutableArray *arr1 = [NSMutableArray arrayWithArray:[initialArray objectAtIndex:0]]; 
[arr1 addObjectsFromArray:[initialArray objectAtIndex:1]]; 

今ARR1は、すべてのオブジェクト

+1

これは、入力配列がちょうど2つのサブ配列しか持たないことを前提としています。 –

1

サンプルコード:

NSArray* arrays = @(@(@"http://aaa/product/8_1371121323.png",@"http://aaa/product/14_1371123271.png"),@(@"http://aaa/product/9_1371121377.png")); 
NSMutableArray* flatArray = [NSMutableArray array]; 
for (NSArray* innerArray in arrays) { 
    [flatArray addObjectsFromArray:innerArray]; 
} 

NSLog(@"%@",[flatArray componentsJoinedByString:@","]); 
+2

1)NSArray * arr = @ [@ [..、..]、@ [..]]。 2)最後に3の代わりに2つの要素を持つ配列を取得します。 – Sk0prion

+0

配列を渡します。私は最初の行を無視します – user23790

101

場合には1行で行うことができますがあなたはキーバリューコーディングを気にしません(KVC)。 @unionOfArraysコレクション演算子は、探しているものとまったく同じです。

述部、バインディングなどにKVCが頻繁に発生している可能性があります。しかし、それはこのような通常のObjective-Cのコードで呼び出すことができます。他のコレクションの演算子はすべて、@記号で始まる、KVCに

NSArray *flatArray = [array valueForKeyPath: @"@unionOfArrays.self"]; 

があります。 docsにそれに関する詳細があります。

+0

非常に良い!私はちょうど興味があります:それはより深くネストされた配列で動作するかどうかチェックしましたか? –

+0

@MartinRコレクション演算子を任意の深度まで再帰的に操作することはできませんが、多次元配列でも動作します。小さな実験の結果で自問自答の質問を投稿しました:http://stackoverflow.com/q/17109942/644348 – Monolo

+3

+1、KVCは常に素晴らしいです。 +1ライナーの場合は+1 – Bhavin

関連する問題