質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

15826閲覧

【Swift】多次元配列の2つ目の要素に追加(append)できない

konsukeyama

総合スコア12

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

2クリップ

投稿2017/07/06 21:54

初歩的なことですみません。
以下のような多次元配列を作成し、1つ目の要素には追加(append)できるのですが、2つ目の要素に追加することができずに困っております。
恐らく宣言の仕方が悪いのだと思いますが、どのように宣言すればよろしいでしょうか?

var hairetu:[[String]] = [[]] hairetu[0].append("value") // <--追加できる
var hairetu:[[String]] = [[]] hairetu[1].append("value") // <--追加できない。エラー「Index out of range」となる。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

swift

1var hairetu:[[String]] = [[]]

これは、二次元配列の1次元めの要素が1個しか追加されていません。

次のように2個めの要素の初期化を追加すれば2個目にも追加できます。

swift

1var hairetu:[[String]] = [[],[]] 2hairetu[1].append("value")

あるいは、次のように1次元めの要素を後で1個追加すればhairetsu[1]にアクセスできます。

swift

1var hairetu:[[String]] = [[]] 2hairetu.append([]) 3hairetu[1].append("value")

投稿2017/07/06 22:35

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

konsukeyama

2017/07/07 01:55

分かりやすいご説明、ありがとうございます。 2個目以降の要素に追加する場合は、初期化が必要と理解いたしました。 辞書型(連想配列)でトライしてみたいと思います。
guest

0

ベストアンサー

後の例がエラーとなるのはhairetu[1]の要素がまだ存在しないからです。
次のコードを参照してみてください。

swfit

1var array:[[String]] = [[]] 2 3// (0) 4array[0].append("0,0") 5array[0].append("0,1") 6print(0, array) 7 8// (1) 9array.append([]) 10print(1, array) 11 12// (2) 13array[1].append("1,0") 14print(2, array) 15 16// (3) 17array.append(["2,0"]) 18print(3, array) 19 20結果==> 210 [["0,0", "0,1"]] 221 [["0,0", "0,1"], []] 232 [["0,0", "0,1"], ["1,0"]] 243 [["0,0", "0,1"], ["1,0"], ["2,0"]]

(0)の実行後はarrayの要素数は1なのでarray[0]しか存在しません。
(1)の実行後にarray[1]が空配列として追加されます。このような形になってから初めて(2)が実行できます。
(3)のようにしてarray[2]に[String]型の要素を直接追加することもできます。

投稿2017/07/06 22:36

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

konsukeyama

2017/07/07 01:53

詳細に解説いただき、ありがとうございます。 添字が数字型の配列の場合、順番に追加する必要があるということですね。承知しました。 辞書型(連想配列)でトライしてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問