↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > NSDictionary

NSDictionary

NSDictionaryはキーがついた配列。配列Arrayの場合はhogeArr[0]等で要素にアクセスしますが、 Dictionaryの場合は、hogeDic["key1"]等でアクセスします。

サンプル画像

NSDictionaryのクラス階層

NSObject

NSDictonary

参考Appleサイト(英語): Foundation Framework Reference NSDictionary Class Reference
参考:SwiftのArrayとDictionaryの使い方

NSDictonary,Dictonaryの違い

Objective-Cで利用していたNSDictionaryがSwiftではDictionaryが新しく実装されていますので、Dictionaryを説明いたします。

Array,Dictonaryの違い

この違いをいつも悩む時がありますので覚書に以下記載します。

Arrayは番号で要素を取り出す


var hogeArr: String[] = ["hoge1", "hoge2", "hoge3", "hoge4"];
println(hogeArr[0]);

DictionaryはKeyで要素を取り出す


var hogeDic: Dictionary = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
println(hogeDic["title"]);

Dictonary例文



var hogeDic: Dictionary = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
println(hogeDic["title"]);

//データ追加
hogeDic["pagerank"] = "3";
println(hogeDic["pagerank"]);

//要素個数
println(hogeDic.count);

//中身を一気に取得
println(Array(hogeDic.keys));//pagerank,title,url
println(Array(hogeDic.values));//3,swift-salaryman,http://swift-salaryman.com/

//データ更新
hogeDic.updateValue("0", forKey: "pagerank") 
println(hogeDic["pagerank"]);

//データ削除
hogeDic.removeValueForKey("pagerank")
println(Array(hogeDic.keys));//title,url

上記例はDictionary型に自動でString型が配置されています。


var hogeDic: Dictionary = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
と宣言すると、
var hogeDic: Dictionary<String,String> = ["title": "swift-salaryman", "url": "http://swift-salaryman.com/"]
と同じになります。

同様に数字を含めてDictionaryを作成すると、同様に自動で型がセットされているようです。


var hogeDic: Dictionary = ["key1": 0, "key2": "test"]
と宣言すると、
var hogeDic: Dictionary<Int,String> = ["key1": 0, "key2": "test"]
と同じになります。

Dictonaryの為になるリンクまとめ

いつもQiita様には勉強させていただいています。。。
参考:Swift の Dictionary で nil を扱う
参考:Swiftで定数(let)のArrayの要素は変更できるけどDictionaryでは変更できない理由
参考:The Swift Programming Language - Collection Types(集合型、Array とか Dictionary)をまとめる

↓こんな記事もありますよ!


2021-05-14 14:21:41

WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。

AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、 昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は...

2021-05-06 14:04:37

LINEのアニメーションスタンプ制作の落とし穴、、、失敗談

ゴールデンウィークにLINEスタンプを作成してみました。 作り切って申請も通したんですが、意図したアニメーションと違う、、、、 LINEクリエーターの画面だと、アニメーションのプレビュー...

2021-05-01 18:05:35

久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。

忘れないようにメモ エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。 ターゲット→ex...
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!