読者です 読者をやめる 読者になる 読者になる

文字っぽいの。

文字を書いています。写真も混ざります。

Swift3でオブジェクトのシリアライズ・デシリアライズがうまくいかなくなった問題の対処

いままではこんなふう required init?(coder aDecoder: NSCoder)に書いていた。

guard let id = aDecoder.decodeObject(forKey: "id") as? Int else {    
    // なんかする
    return
}

Swift3 & Xcode8環境下では、idにずっとnilが返ってきて、デシリアライズができなくて困っていたらこうすればよかった。

let id = aDecoder.decodeInteger(forKey: "id")

ただこの方法だとdecodeに失敗した際に常に0が返ってくる。違う書き方があるのだろうか……。