質問: 【Xcode 8.3.3を使用】 既にリリース済みのアプリ(有料版)があり、今回無料版をリリースしました。 無料版はTARGETをDupulicateして作成しています。 (有料版のTARGET名に”Free”という文字列を足して無料版のTARGET名としました) 先にリリースしていた有料版で、データをファイルにシリアライズ/デシリアライズする処理があります。 (NSCording,NSKeyedUnarchiver,NSKeyedArchiverを使っています。) アプリで作成したデータを保存したり読み込んだりする処理です。 無料版を作成して、有料版で作った方のファイルを読み込もうとすると the class may be defined in source code or a library that is not linked と出てエラーになりました。 ファイルへ書き込むクラスの構造は有料版と無料版で同じなのですが、 どうもターゲット名が変わったことが原因のようでした。 ※今回の無料版では、有料版のファイル読み込みは保留してリリースしました。 実現したいのは、 ・先にリリースしている有料版に影響を与えないで、無料版でも有料版で作成したファイルを読み込めるようにする。 ・無料版で作成したファイルも有料版で読み込めるようにする。 です。 調べてみたのですがイマイチわかりませんでした。名前空間とかその辺だとは思うのですが・・・。 以上、よろしくお願い致します。
回答: TARGET名が`Hogehoge`、クラス名が`Hoge`として、Unarchiveする前に、 ``` NSKeyedUnarchiver.setClass(Hoge.self, forClassName: "Hogehoge.Hoge") ``` としてみて下さい。