
いつもお世話になっております。
iOSで開発を勉強中の者です。
マップアプリを開発しており、NSMutableArrayからデータを呼び出して以下のようにCustomAnnotationクラスの初期化を行っていました。
CustomAnnotation *Pin1 = [[CustomAnnotation alloc] initWithLocationCoordinate:CLLocationCoordinate2DMake(numberToDouble(Latitude[1]), (numberToDouble(Longitude[1])) title:Title[1] subtitle:Subtitle[1]];
これを、for文を使って複数一度に初期化を行おうとしたのですが、エラーが出てしまいました。
コードは下のようになっています。
for(int i=0; i<10; i++) {
CustomAnnotation *Pin[i] = [[CustomAnnotation alloc] initWithLocationCoordinate:CLLocationCoordinate2DMake(numberToDouble(Latitude[i]), (numberToDouble(Longitude[i]))) title:Title[i] subtitle:Subtitle[i]];
}
Variable-sized object may not be initialized と出ているのですが、可変長配列の初期化はできないのでしょうか・・・。
またできるとしたらどのような方法があるのでしょうか。
どうかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
なにか問題が発生したとき、その問題の原因が自分自身にあると、最初に思う人間は、むしろ少数であって、コンパイラの欠陥だとか、言語仕様の欠陥と考えたがるのが多数派だというのは、理解できます。
たしかに私自身にもそういう傾向はあります。しかしそれは人間の心理の話であって、現実世界の事実は、コンパイラや言語仕様に原因を認められるケースはほとんどなく、99.9%は人為ミスです。for(int i=0; i<10; i++) {
CustomAnnotation *Pin[i] = [[CustomAnnotation alloc]
~~~~~
こういう書式はありえません。
サンプルを示します。
NSMutableArray *testArray = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
testArray[i] = [NSNumber numberWithInt: i + 1];
}
for (int i = 0; i < 10; i++) {
NSLog(@"%d", [testArray[i] intValue]);
}
これはモダンな書き方で、従来の書式はこちら。
NSMutableArray *testArray = [NSMutableArray array];
for (int i = 0; i < 10; i++) {
[testArray addObject: [NSNumber numberWithInt: i + 1]];
}
for (int i = 0; i < 10; i++) {
NSLog(@"%d", [testArray[i] intValue]);
}
以上を参考にしてください。
お礼が遅くなり申し訳ありません。
丁寧に回答していただきありがとうございます。
ご指摘の通り、自分自身の知識不足から来るミスです。
これから勉強して参ります。
いただいたサンプルや、他サイト様の情報から何とかやりたい動きをさせることができました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
最早開始時間と最遅完了時刻を...
-
C言語 エラーの原因がわからな...
-
std::set<int> で、ある値が何...
-
#define _CRT_SECURE_NO_WARNIN...
-
iTRONプログラミング
-
signal関数の使い方
-
Haskellで関数を合成しようとす...
-
if と配列の組み合わせ
-
C言語 プログラミング
-
「指定されたキャストは有効で...
-
【C++】関数ポインタの使い方
-
複数桁10進数の*桁目だけを抽出...
-
ポストの対応問題
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
For文の終了値を関数にしても問...
-
配列をnビットシフトする
-
数学 一次関数 関数 y=-3/4x+k(...
-
Enterキーを押されたら次の処理...
-
sscanfとscanfの違いがよくわか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
複数桁10進数の*桁目だけを抽出...
-
return 1L
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
式は定数値が必要です」という...
-
数字列を3桁ごとにカンマで区切...
-
実数の整数部,小数部の取得
-
C言語でDxlibを使って3x3の奇数...
-
プログラムについて(UNIX)
-
acceptをalarmでタイムアウトさ...
-
C言語の課題です
-
エラー 添字が付けられた値が、...
-
CStringの配列要素を関数で受け...
-
最早開始時間と最遅完了時刻を...
-
入力された数字を大きい順に並...
おすすめ情報