あれとかこれとかそれとか

気まぐれプログラマーのブログです。簡単なことから小難しいことまで必死に勉強した内容を書き留めていきます。プログラム以外にも気になったことや面白かったことをまとめていこうと思います。

【Swift】 NSCodingを継承した自作のクラスオブジェクトをアーカイブする

自作のクラスオブジェクトをエンコードしてNSData型に変換する方法に苦戦しました。
NSData型をデコードして自作クラスに戻すこともできます。

ただ、デコード時には、NSData型が元はどのクラスであるかをプログラマーが把握している必要があるので、
ちょっとだけ不便?に感じました。

実は何か良い方法があるかもしれません。何か良い方法があれば教えてください!

エンコード、デコードにはそれぞれ以下のクラスを使用します。

①CommonData(自作クラス)を作成します
 エンコード/デコードを実施するためにNSCodingを継承しておきます

エンコード時に呼ばれる関数です
 ここでは各メンバ変数をキー文字列と関連付けてエンコードします

③デコード時に呼ばれる関数です
 ここではキー文字列から各メンバ変数をデコードします

エンコードの確認です
 CommonData→NSData に変換します

⑤デコードの確認です
 NSData→CommonData に変換します

⑥デコード済みオブジェクトの中身が書き換えれることを確認します

自作クラスをアーカイブ
オブジェクトをアーカイブ