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

この記事からわかること

  • Swift辞書型(Dictionary型)の使い方操作方法
  • 定義追加削除更新など
  • for文中身回して取り出すには?

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

辞書型(Dictionary型)とは?

Swiftの辞書型(Dictionary型)とはキーと値の2つでデータを保持するコレクション型(※)の1つです。※他には配列(Array)やSet型などがある

キーは辞書内で一意である必要があるので重複したキーを設定することはできません。また順序を保持することができないので格納された順番などではなく参照するたびに順序が入れ替わる可能性があります。

値にはさまざまなデータ型を格納することができ、重複した値も自由に格納することができます。

使い方

公式リファレンス:Dictionary構造体

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)")
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

自作iOSアプリ

\ アプリをリリースしました /

mapping

自分だけの地図を作ろう!-mapping-

無料posted withアプリーチ

割り勘アプリ-bill-

旅行におすすめ!
割り勘アプリ-bill-

無料posted withアプリーチ

Imakoko

現在地を取得するアプリ!Imakoko

無料posted withアプリーチ

ふるログ

ふるさと納税管理アプリ-ふるログ-

無料posted withアプリーチ

Remind-シンプル通知アプリ-

シンプル通知アプリ-Remind-

無料posted withアプリーチ

CLIPURL

好きな記事をクリップしよう!-CLIPURL-

無料posted withアプリーチ

記録カレンダー

続けたを可視化できるアプリ!記録カレンダー

無料posted withアプリーチ

CART-共有できるお買い物リスト-

CART-共有できるお買い物リスト-

無料posted withアプリーチ

QuickPressPanel

早押しゲーム-QuickPressPanel-

無料posted withアプリーチ

貸し借り管理アプリ

友達とのお金の管理-貸し借り管理アプリ-

無料posted withアプリーチ

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Githubにて
iOSアプリのソースコードを公開中!

自作Webアプリ

子育て知識共有サイト-mikata-

子育て知識共有サイト-mikata-

New Article

index