📌 基本構文(Objective-Cスタイル)
let dict: NSDictionary = [
"name": "たろう",
"age": 25,
"city": "東京"
]
print(dict["name"] ?? "不明") // たろう
※ Swiftでは [AnyHashable: Any] として扱われることが多く、型安全ではありません。
NSDictionaryは、キーと値のペアでデータを管理します。キーは String や Int などのハッシュ可能な型、値は Any 型で、任意のオブジェクトを格納できます。
🔁 NSMutableDictionary(可変版)
let mutableDict = NSMutableDictionary()
mutableDict["fruit"] = "りんご"
mutableDict["count"] = 3
mutableDict.removeObject(forKey: "count")
print(mutableDict) // ["fruit": "りんご"]
可変辞書を使う場合は NSMutableDictionary を使用します。
🔄 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 を使って変換します。
🌐 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 が使われます。
📎 使用シーン
- Objective-Cベースのライブラリを使うとき
- JSONなど外部データとのやり取り(型が不確定な場合)
- 可変性を持つ辞書(NSMutableDictionary)を使いたいとき
Swiftでは通常、Dictionary<Key, Value> を使いますが、Objective-Cのコードや古いAPIとの互換性のために NSDictionary を使うことがあります。
🚧 注意点
- 型安全でない(Any型が含まれる)
- SwiftのDictionaryを優先すべき
- 可能な限り型キャストして安全に使う