読者です 読者をやめる 読者になる 読者になる

m_shige1979のささやかな抵抗と欲望の日々

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

なんとなく作ったサイト

http://www.it-check-matome.info/


Github(注意すること)

https://github.com/mshige1979

swiftの学習(配列と連想配列)

なんか空の配列を定義したらappendが使えなかった

空の配列の場合は追加するためには型を指定する必要がある用です

Arrayの中にDictonaryを入れる場合は?

サンプル
import Foundation

var items = [NSDictionary]()

items.append([
    "name": "りんご",
    "detail": "赤い果物でおいしい",
    "hoge": [
        "aaa": "111"
    ]
])

items.append([
    "name": "ばなな",
    "detail": "黄色い皮で剥くと甘い",
    "hoge": [
        "aaa": "222"
    ]
])

items.append([
    "name": "みかん",
    "detail": "酸味が効いてておいしい",
    "hoge": [
        "aaa": "333"
    ]
])

println(items.count)

for(_val) in items {
    var _name: AnyObject? = _val["name"]?
    var _detail: AnyObject? = _val["detail"]?
    println("name = \(_name), detail = \(_detail)")
}
結果
3
name = Optional(りんご), detail = Optional(赤い果物でおいしい)
name = Optional(ばなな), detail = Optional(黄色い皮で剥くと甘い)
name = Optional(みかん), detail = Optional(酸味が効いてておいしい)

Dictonaryの場合は型を指定しないとoptionalになって意味がわかりにくくなるようです

多次元配列バージョン?

サンプル
import Foundation

var items = [NSArray]()

items.append(["aaa", "bbb", "ccc"])
items.append(["ddd", "eee", "fff"])
items.append(["111", "222", "333"])

println(items.count)

for(_val) in items {
    var _data1: AnyObject? = _val[0]
    var _data2: AnyObject? = _val[1]
    var _data3: AnyObject? = _val[2]
    println("1 = \(_data1), 2 = \(_data2), 3 = \(_data3)")
}
結果
3
1 = Optional(aaa), 2 = Optional(bbb), 3 = Optional(ccc)
1 = Optional(ddd), 2 = Optional(eee), 3 = Optional(fff)
1 = Optional(111), 2 = Optional(222), 3 = Optional(333)

まとめ

初期化しただけでは追加できないので追加する値が決まっている場合は型を指定すること
初期化の時点で値を設定する場合は問題ないけど最初は空から始まるだろうし…

連想配列のキーを指定する場合はダブルクォーテーションで挟まないと取得できないおそれあり
他の言語ではシングルクォーテーションでも可能な場合があるので気をつけること

広告を非表示にする