動的なNSArrayを作成する必要があります。つまり、配列のサイズや配列に含まれる要素がわかりません。要素を配列に動的に追加する必要があります。 NSArrayクラスリファレンスを見ました。 arrayWithObjectsというメソッドがあります。これは、配列自体を初期化するときに使用する必要があります。しかし、私は私がする必要があることを達成する方法を知りません。
次のようなことをする必要があります。
NSArray *stringArray = [[NSArray init] alloc] ;
for (int i = 0; i < data.size; i++){
stringArray.at(i) = getData(i);
}
NSArray
を作成すると、不変であるため要素を追加できなくなります。代わりにNSMutableArray
を使用してみてください。
また、alloc
とinit
の順序を逆にしました。 alloc
はインスタンスを作成し、init
はそれを初期化します。
コードは次のようになります(getData
がグローバル関数であると仮定):
NSMutableArray *stringArray = [[NSMutableArray alloc] init];
for(int i=0; i< data.size; i++){
[stringArray addObject:getData(i)];
}
不変配列を使用している場合、配列にオブジェクトを追加する別の方法を次に示します。これはスレッドセーフです。
arrayByAddingObject
メソッドを使用できます。時々それははるかに良いです。それについての議論はここにあります: NSMutableArray vs NSArrayの方が良い
NSArrayをNSMutableArrayに変換すると、値を動的に追加できます。
NSMutableArray *mutableStringArray = [stringArray mutableCopy];
[mutableStringArray addObject:@"theNewElement"];