

初めまして

[code]

    var a = [String]()
    
    a.insert("a", atIndex: 0)
    a.append("b")
    a += ["c"]
    
[/code]

というようなことを、  
多重配列したいのですが、

[code]

    var b = [[String]]()
    
    a[0].insert("a", atIndex: 0)
    a[1].append("b")
    a[2] += ["c"]
    
[/code]

コンパイルは通るのですが、  
この部分で以下のエラーがでます。

[code]

    fatal error: Array index out of range
[/code]

playgroundで試してもエラーにはなりませんが動作しません。

多次元配列に関する記述があまりみあたりませんのでこちらで質問してみました。  
よろしくお願いいたします。


CC BY-SA 3.0
2015-05-01T05:17:12.240
9731
2015-05-03T08:04:53.427
9153
question
swift xcode
swiftで多次元配列が思ったような動作をしてくれません


多次元配列の中身が初期化されていません。

[code]

    var b:[[String]] = [[], [], []]
    
    b[0].insert("a", atIndex: 0)
    b[1].append("b")
    b[2] = ["c"]
    
[/code]


CC BY-SA 3.0
2015-05-01T05:48:10.230
9733
2015-05-01T06:11:28.557
2015-05-01T06:11:28.557
49
9558
9731
answer


どうも、Xcode
6.3のPlaygroundでは、配列のメンバーは、Immutableであるようです。バグなのかなんなのかわかりませんが、Playground以外の環境と、挙動が異なりますので、注意が必要です。

二次元配列の初期化は、このようにするといいでしょう。

[code]

    var stringArray = [[String]]()
    stringArray.append([String]())
    stringArray.insert([String](), atIndex: 1)
    stringArray += [["c"]]
    
    stringArray[0].append("a")
    stringArray[1].insert("b", atIndex: 0)
    stringArray[2] += ["d"]
    
    println(stringArray.description)
    
[/code]

出力：

> [[a], [b], [c, d]]


CC BY-SA 3.0
2015-05-01T10:30:48.587
9746
2015-05-03T08:04:53.427
2015-05-03T08:04:53.427
7362
7362
9731
answer