対象: 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) () Swift 2.0対応。
Copyright© 2004-2019 モバイル開発系(K) All rights reserved.
[Home]
|