Swiftには配列に似たデータ形式のDictionary(ディクショナリ)があります。
この記事ではDictionaryについて、
・Dictionaryとは
・Dictionaryを作成する方法
などの基本的な解説から、
・Dictionaryの要素を追加する方法
・Dictionaryの要素を更新する方法
・Dictionaryの要素をを削除する方法
などの応用的な使い方についても解説していきます。
ここでは、Dictionaryの基本から追加・更新・削除について詳しく解説していきます!
※この記事ではSwift3.1を使用しています。
Dictionaryとは
Dictionary(ディクショナリ)とはキーと値をセットにした配列のようなものです。
例えば、Dictionaryでは、
「名前 : “山田”」「年齢 : “23”」「性別 : “男”」
のようにキーと値をセットで作成します。
キーに紐づく値を参照できるため、ディクショナリ=辞書と呼びます。
Dictionaryは以下のように宣言します。
Dictionaryの宣言(型指定あり):
var 変数名:Dictionary<String,String> = [key1 : value1, key2 : value2, key3 : value3, …]
また、以下のように型指定をしない場合はkeyとvalueにそれぞれint型やString型を混在して記述することができます。
Dictionaryの宣言(型指定なし):
var 変数名 = [key1 : value1, key2 : value2, key3 : value3, …]
注意点:
DictionaryはKeyの値を重複することはできません。valueは重複可能です。
配列と同様に変数(var)を指定すると要素の変更が可能で、定数(let)の場合は要素の変更はできません。
Dictionaryの基本的な使い方
ここではDictionaryの基本的な作成方法を見ていきましょう!
Dictionaryの作成
以下にDictionaryを作成する基本的な方法を紹介します。
サンプルプログラム1(型指定なし):
let fruits = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] for (key,value) in fruits { print("\(key)は\(value)円です。") }
実行結果:
りんごは100円です。 オレンジは80円です。 メロンは700円です。 バナナは150円です。 パイナップルは450円です。
サンプルプログラム2(型指定あり):
let fruits:Dictionary<String,Int> = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] for (key,value) in fruits { print("\(key)は\(value)円です。") }
実行結果:
りんごは100円です。 オレンジは80円です。 メロンは700円です。 バナナは150円です。 パイナップルは450円です。
以下のように指定した型以外の型を指定するとエラーとなります。
サンプルプログラム3(失敗例):
let fruits:Dictionary<String,String> = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] for (key,value) in fruits { print("\(key)は\(value)円です。") }
実行結果:
error: cannot convert value of type 'Int' to expected dictionary value type 'String'
空のDictionaryを作成する。
Dictionaryを定義してあとから値を追加したい場合は、とりあえず空のDictionaryを作成しておくことができます。
空のDictionaryは以下のように作成します。
//型指定 var test1:[String:String] = [:]
Dictionaryを追加・更新する
Dictionaryに要素を追加するには、updateValueメソッドを使用します。
書き方:
配列名. updateValue(値, forKey: key)
引数:
第一引数にはDictionaryで追加する値を指定します。
第二引数のforKey:の後にはキーを指定します。
キーが既に登録されていた場合は値が更新されます。
返り値:
追加前のDictionaryを返します。
以下にupdateValueを使用してDictionaryの要素を追加する方法を紹介します。
サンプルプログラム1:
var fruits = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] fruits.updateValue(300, forKey: "いちご") fruits.updateValue(130, forKey: "りんご") for (key,value) in fruits { print("\(key)は\(value)円です。") }
実行結果:
いちごは300円です。 りんごは130円です。 オレンジは80円です。 メロンは700円です。 バナナは150円です。 パイナップルは450円です。
このサンプルプログラムではupdateValueでキーに”いちご”を指定し、値に300を指定してDictionaryに要素を追加しています。
また、キーに指定した”りんご”は既に存在するので、値のみ更新されます。
要素を追加するには「配列名[key] = 値」の書き方で追加することもできます。
updateValueメソッドでは引数がキーと値の指定方法が逆なので、こちらの書き方のほうが直感的に操作できます。
サンプルプログラム2:
var fruits = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] fruits["いちご"] = 300 fruits["りんご"] = 130 for (key,value) in fruits { print("\(key)は\(value)円です。") }
実行結果:
いちごは300円です。 りんごは130円です。 オレンジは80円です。 メロンは700円です。 バナナは150円です。 パイナップルは450円です。
Dictionaryを削除する
Dictionaryの指定した要素を削除するには、removeValueメソッドを使用します。
書き方:
配列名.removeValue(forKey:key)
引数:
引数には削除する要素のkeyを指定します。
返り値:
追加前のDictionaryを返します。
以下にremoveValueを指定してDictionaryを要素を削除する方法を紹介します。
サンプルプログラム:
var fruits = ["りんご": 100, "オレンジ": 80, "メロン": 700, "バナナ": 150, "パイナップル": 450] //要素の削除 fruits.removeValue(forKey:"りんご") for (key,value) in fruits { print("\(key)は\(value)円です。") }
バナナは150円です。 オレンジは80円です。 メロンは700円です。 パイナップルは450円です。
まとめ
ここではDictionary(ディクショナリ)について、
・Dictionaryとは
・Dictionaryを作成する方法
・Dictionaryの要素を追加する方法
・Dictionaryの要素を更新する方法
・Dictionaryの要素をを削除する方法
などについて解説しました。
Dictionaryは配列と同じくよく使われるデータ形式ですので、使い方はしっかりと覚えておきましょう!
もしDictionaryの使い方を忘れてしまったら、この記事を思い出してくださいね!