SwiftでNSDictionaryにnilをいれようとしたら、NSNullじゃないとObjective-Cの時代からそもそもダメだった

  • 2
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Objective-Cではnilがんがん使えるし!って思いながらSwiftでOptionalのString型をvalueに突っ込んだdictionaryを、NSDictionaryにキャストしようとしたらXcodeから出来ないよ><って怒られました。

これどうして出来ないかって言うと、そもそもObjective-Cの時代からNSDictionaryってkeyもvalueもnilを許してなくて、NSNullじゃないとダメだったからでした。1 ということで、nullなデータをいれたいならNSNullを使えばよいことがわかりました。

コードにするとこんなのです。検索よりもリファレンスを読めという話ですね。

var age:String?
var dict = NSMutableDictionary()
dict["age"] = age ?? NSNull()