対象:
Swift

Dictionaryの初期化と追加、削除(Swift)

Swiftではkey-valueのペアを保持するDictionaryが利用できる。Dictionaryはリテラルを使用して初期化すると簡単に利用できる。keyとvalueを:で区切り、更にカンマで区切れば複数のペアを含むことができる。

        var testScore = ["国語": 95, "算数": 90, "理科": 100, "社会": 100]

Dictionary内の要素を取り出すときは[]でkeyを指定すれば良いのだが、これにはちょっとだけ考慮が必要だ。というのも、swiftのDictionaryはOptionalで値を返してくれるので、皮むき(unwrap)してやる必要があるのだ。いくつかやり方はあるのだが、一番簡単なのは末尾に!を付ける方法だろう。他の方法としては変数の型に!を付ける方法もある。ただし、前者の場合、要素が見つからないとfatal errorになるので注意したい。

        // 末尾の!でunwrap
        // また、String補間では"や\を使えないため変数に格納
        let mv = testScore["算数"]!
        //let mv : Int! = testScore["算数"]
        print("算数: \(mv)点")

また、真面目にやるならif文できちんとOptionalの評価を行うという方法もある。

        if let mv = testScore["算数"] {
            print("算数: \(mv)点")
        } else {
            print("算数: なし")
        }

Dictionaryに要素を追加するには、新しいkeyを指定してvalueを入れるだけで良い。Dictionary内の要素数はcountプロパティで取得できる。

        testScore["英語"] = 85
        for (subject, score) in testScore {
            print("\(subject): \(score)点")
            sum += score
        }
        print("全\(testScore.count)教科の平均は\(sum / testScore.count)点です")

既存のkeyを指定して値を代入すると要素を更新できる。また、要素を更新するためにupdateValueメソッドも用意されている。これの使いどころは、Dictionaryに要素を新規追加したのかそれとも更新したのか知りたい時だ。updateValueメソッドは指定されたkeyに対応する要素が見つかったらその更新前の値を返す。

        testScore["英語"] = 85
        // 更新の場合、更新前の値が返される
        if let oldValue = testScore.updateValue(80, forKey: "英語") {
            print("英語の点数を更新しました。")
        }

Dictionary内の要素を削除したい場合、keyを指定してnilを代入すれば削除される。また、Dictionaryを空にしたいなら変数名に[:]を代入することで空になる。もちろん、countプロパティの値もそれらに応じて更新される。

        testScore["算数"] = nil	// 要素を削除
        testScore = [:] // 空にする

空のDictionaryはkeyとvalueそれぞれの型を指定して初期化する。

        var emptyDictionary = [String: Int]()
(2015/01/23)
(2015/09/26 更新) Swift 2.0対応。

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2016 モバイル開発系(K) All rights reserved.
[Home]