web-dev-qa-db-ja.com

要素を追加するNSArray

動的なNSArrayを作成する必要があります。つまり、配列のサイズや配列に含まれる要素がわかりません。要素を配列に動的に追加する必要があります。 NSArrayクラスリファレンスを見ました。 arrayWithObjectsというメソッドがあります。これは、配列自体を初期化するときに使用する必要があります。しかし、私は私がする必要があることを達成する方法を知りません。

次のようなことをする必要があります。

NSArray *stringArray = [[NSArray init] alloc] ;  
for (int i = 0; i < data.size; i++){  
    stringArray.at(i) = getData(i);
}
39
saikamesh

NSArrayを作成すると、不変であるため要素を追加できなくなります。代わりにNSMutableArrayを使用してみてください。

また、allocinitの順序を逆にしました。 allocはインスタンスを作成し、initはそれを初期化します。

コードは次のようになります(getDataがグローバル関数であると仮定):

NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
   [stringArray addObject:getData(i)];
}
77
pgb

不変配列を使用している場合、配列にオブジェクトを追加する別の方法を次に示します。これはスレッドセーフです。

arrayByAddingObjectメソッドを使用できます。時々それははるかに良いです。それについての議論はここにあります: NSMutableArray vs NSArrayの方が良い

7
Danil

NSArrayをNSMutableArrayに変換すると、値を動的に追加できます。

NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];
3