【Swift】辞書(Dictionary)型の操作方法!追加/削除/更新/for文

この記事からわかること
- Swiftの辞書型(Dictionary型)の使い方や操作方法
- 定義や追加、削除、更新など
- for文で中身を回して取り出すには?
index
[open]
\ アプリをリリースしました /
辞書型(Dictionary型)とは?
Swiftの辞書型(Dictionary型)とはキーと値の2つでデータを保持するコレクション型(※)の1つです。※他には配列(Array)やSet型などがある
キーは辞書内で一意である必要があるので重複したキーを設定することはできません。また順序を保持することができないので格納された順番などではなく参照するたびに順序が入れ替わる可能性があります。
値にはさまざまなデータ型を格納することができ、重複した値も自由に格納することができます。
使い方
Swiftでは辞書型はDictionary
構造体として定義されています。キーはString
型でもlnt
型でも定義することができます。
@frozen struct Dictionary<Key, Value> where Key : Hashable
辞書型を定義するには[キー:値]
形式で記述します。
var user = ["name": "あめ","birthplace": "東京都"]
空の辞書型を生成する
空の辞書型を定義して変数に格納する際は明示的にデータ型を定義して[データ型:データ型]
形式もしくはDictionary< データ型, データ型 >
のように記述します。
var emptyDic: [String: String] = [:]
// 同義
var emptyDic2: Dictionary<String, String> = [:]
またイニシャライザを使用して以下のように記述することも可能です。
let emptyDic = [String: Int]()
値を取得する
var responseMessages = [200: "OK",
403: "Access forbidden",
404: "File not found",
500: "Internal server error"]
変数に格納した辞書型の値を取得するには変数[キー]
形式で取得することができます。キー値が文字列なら["文字列"]
となります。取得できる値はOptional
になります。これは添字で指定したキーが存在しないものを指定される可能性があるためです。存在しないキーを指定した場合はnil
が返ります。
print(responseMessages[404]) // Optional("File not found")
print(responseMessages[100]) // nil
キーを取得する
キーに指定されている値を取得するにはkeys
プロパティから保持しているkeyを要素とする配列形式で参照可能です。
print(responseMessages.keys) // [200, 404, 403, 500]
値を更新する
辞書型の値を更新するには変数[キー]
で変更したい箇所を指定し値を入れ込みます。
responseMessages[404] = "見つかりませんでした"
値を追加する
新しいキーと値のペアを追加する場合も新しいキーを指定してそのまま値を入れ込みます。
responseMessages[301] = "リダイレクト"
updateValueメソッド
responseMessages.updateValue("リダイレクト", forKey:"301" )
値を削除する
保持しているキーと値のペアを削除するにはnil
を格納します。
responseMessages[301] = nil
removeValueメソッド
removeValue
メソッドを使用しても削除することが可能です。その場合は引数にキー値を指定します。
let removed = responseMessages.removeValue(forKey: 301)
for文で回す
辞書型の中身をfor文を使って取り出すことも可能です。各キーと値にはタプルを使って受け取ることで両方を参照することができます。
for (code, message) in responseMessages {
print("HTTPステータス:\(code) &メッセージ:\(message)")
}
またkeys
プロパティまたはvalues
プロパティを使用してどちらか片方にアクセスすることもできます。
for code in responseMessages.keys {
print("HTTPステータス:\(code)")
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。
個人開発に限界を感じたらiOSに特化したプログラミングスクール「iOSアカデミア」も検討してみてください!無料相談可能で「最短・最速」でiOSエンジニアになれるように手助けしてくれます。