【Swift】 NSCodingを継承した自作のクラスオブジェクトをアーカイブする
自作のクラスオブジェクトをエンコードしてNSData型に変換する方法に苦戦しました。
NSData型をデコードして自作クラスに戻すこともできます。
ただ、デコード時には、NSData型が元はどのクラスであるかをプログラマーが把握している必要があるので、
ちょっとだけ不便?に感じました。
実は何か良い方法があるかもしれません。何か良い方法があれば教えてください!
エンコード、デコードにはそれぞれ以下のクラスを使用します。
- エンコード:NSKeyedArchiver
- デコード:NSKeyedUnarchiver
①CommonData(自作クラス)を作成します
エンコード/デコードを実施するためにNSCodingを継承しておきます
②エンコード時に呼ばれる関数です
ここでは各メンバ変数をキー文字列と関連付けてエンコードします
③デコード時に呼ばれる関数です
ここではキー文字列から各メンバ変数をデコードします
④エンコードの確認です
CommonData→NSData に変換します
⑤デコードの確認です
NSData→CommonData に変換します
⑥デコード済みオブジェクトの中身が書き換えれることを確認します
自作クラスをアーカイブ
オブジェクトをアーカイブ