アプリ内に保存したデータをデシリアライズする際に、以下エラーが発生し、デシリアライズできなかった。
[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MyApp.Fund) for key (NS.objects); the class may be defined in source code or a library that is not linked’
※MyAppはアプリ名。
※MyAppはアプリ名。
結局、シリアライズしたときと、デシリアライズしたときで、Pruduct Module Nameが変わってしまったのが原因だった。
なぜ変わってしまったかというと、アプリのTARGETSを追加したからだ。
NSKeyedArchiverは、シリアライズする際に、おそらくPruduct Module Nameを使用していて、それがデフォルトだと、XcodeのBuild Settingsで、${TARGET_NAME}に設定されているから、Pruduct Module Nameが変わってしまい、今回のエラーが起こる原因となった。
今回の対応としては、Pruduct Module Nameを合わせることはせずに、前の名前でデータを保存していたアプリは削除して、再度やり直した。
運用中にTARGET_NAMEを変えることは考えていないので。
コメント