📘 NSDictionaryとは?

NSDictionary は、Objective-C由来の キーと値 のペアでデータを管理する不変の辞書型です。Swiftの Dictionary と互換性があり、特に 古いAPIやJSONの扱い に役立ちます。


…読み込み中…

📌 基本構文(Objective-Cスタイル)

let dict: NSDictionary = [
  "name": "たろう",
  "age": 25,
  "city": "東京"
]

print(dict["name"] ?? "不明")  // たろう

※ Swiftでは [AnyHashable: Any] として扱われることが多く、型安全ではありません。

NSDictionaryは、キーと値のペアでデータを管理します。キーは StringInt などのハッシュ可能な型、値は Any 型で、任意のオブジェクトを格納できます。

NSDictionary | String | Int | AnyHashable

🔁 NSMutableDictionary(可変版)

let mutableDict = NSMutableDictionary()

mutableDict["fruit"] = "りんご"
mutableDict["count"] = 3

mutableDict.removeObject(forKey: "count")

print(mutableDict) // ["fruit": "りんご"]

可変辞書を使う場合は NSMutableDictionary を使用します。

NSMutableDictionary | NSDictionary

🔄 Swift Dictionaryとの相互変換

// NSDictionary → Dictionary
if let swiftDict = dict as? [String: Any] {
  print(swiftDict["age"] ?? "未設定")
}

// Dictionary → NSDictionary
let swift: [String: String] = ["lang": "Swift"]
let nsDict = swift as NSDictionary

Swiftとの互換性のために as?as を使って変換します。

NSDictionary | Dictionary

🌐 JSONとの連携

let jsonString = """
{
  "title": "記事タイトル",
  "likes": 123
}
"""

if let data = jsonString.data(using: .utf8),
   let jsonObject = try? JSONSerialization.jsonObject(with: data) as? NSDictionary {
    print(jsonObject["title"] ?? "")
}

JSONSerialization でJSONデータを扱う際にも NSDictionary が使われます。

NSDictionary | JSONSerialization

📎 使用シーン

Swiftでは通常、Dictionary<Key, Value> を使いますが、Objective-Cのコードや古いAPIとの互換性のために NSDictionary を使うことがあります。

Dictionary | Key | Value | NSMutableDictionary | NSDictionary

🚧 注意点

🔗 関連リンク