WEBOPIXEL

Swiftの配列+辞書使い方メモ

Posted: 2015.09.17 / Category: iOS / Tag: 

普段JSとか軽量な言語しか扱わないのでSwiftの配列+辞書がすごく難しく感じています。
ということでそのあたりのことをメモしました。

Sponsored Link

配列

まずは数値の配列です。

var arr:[Int] = [6, 98, 12, 5, 6]   // 配列を初期化
println(arr[1]) // 98 (2番目の配列を表示)

とくに難しいことはないですね。
数値なのでIntで配列なため[]で囲みます。文字列なら[String]になります。
このようなシンプルな配列なら型は指定しなくても大丈夫ですが、多次元配列など複雑なもはだめなので基本指定した方がいいような気はします。

空で初期化&追加

配列を空で初期化するときは[]を代入します。
appendで配列を追加します。

var arr:[Int] = []  // 空の配列を初期化
arr.append(6)   // 配列の追加
arr.append(3)
arr[1] = 98     // 置き換え
println(arr[1]) // 98

多次元配列

配列の中に配列を入れたいときに使います。

var arr:[[Int]] = []    // 空の多次元配列を初期化
arr.append([1,2,3]) // 配列の追加
arr.append([44,55,66])
println(arr[1][1])  // 55

多次元配列の宣言はカッコを二重にします。
[][]ではないんですね。。。

辞書

文字列をキーとしたい場合辞書を使用します。

// 辞書を初期化
var dic1:[String:Int] = [
    "section1" : 13,
    "section2" : 26,
    "section3" : 62
]
println(dic1["section2"])   // 26

// 辞書を空で初期化
var dic2:[String:Int] = [:]
dic2["section1"] = 13   // 追加
dic2["section2"] = 26
dic2["section3"] = 62
println(dic2["section3"])   // 62

辞書の中に配列を入れる

辞書の中に配列を入れたい場合があります。
その場合は中の型を[]で囲みます。

// 辞書の中に配列
var dic1:[String:[Int]] = [
    "section1" : [13,7,69],
    "section2" : [26,136],
    "section3" : [62,28,7]
]
println(dic1["section2"]?[1])   //136

// 空で初期化
var dic2:[String:[Int]] = [:]
dic2["section1"] = [13,7,69]
dic2["section2"] = [26,136]
dic2["section3"] = [62,28,7]
println(dic2["section3"]?[0])   //62

出力時はひとつ目の[]の後に「?」を付けないといけないようです。

複数の型をもつ配列

一つの配列にざまざまな型を入れたい場合はタプルというのを使うらしいです。
宣言するときは[]ではなく()を使用する。呼び出しもJSのオブジェクトっぽく「.(ドット)」です。

var tuple:(Int, String, Int) = (200, "hoge", 62)
println(tuple.1) // hoge

しかし配列でも普通にできるっぽい。

var arr:Array = [200, "hoge", 62]
println(arr[1]) // hoge

ラベル付きタプル

タプルは関数のようにラベルをつけることができます。

var tuple:(name:String, age:Int) = (name:"Yamada", age:10)
println(tuple.name) //Yamada

タプルの配列

タプルの組みわせを配列として扱いたい場合です。

var arr:[(name:String, age:Int)] = []
arr.append(name:"Tamada", age:10)
arr.append(name:"Tanaka", age:26)
println(arr[1].name) //Tanaka

LEAVE A REPLY

コードを書く場合は<pre>で囲んでください。