0

を使用してオブジェクトのツリーをアーカイブしようとしていますNSKeyedArchiver。ツリー内のすべてのノードNSCodingが をサポートしていますが、ソース コードにアクセスできないため、何も変更できません。NSStringただし、エンコード中にいくつかのノードに追加を含めたいと思います。アーカイブを解除するとき、その文字列を取得し (利用可能な場合)、その文字列に応じて追加のセットアップを行いたいと思います。

どうすればエレガントな方法でこれを行うことができますか? エンコード時にサブクラスに置き換え、サブクラスに追加のエンコードを実装することを考えました。そして、サブクラスinitWithCoder:が適切に初期化および設定されたスーパークラスのインスタンスを返すようにします。これに関する問題は、ツリー内にノード クラスの「実際の」サブクラスが存在する可能性があることです。そのようなサブクラスがエンコードされている場合、置換は機能しません。または、少なくとも方法がわかりません。

現在、NSKeyedArchiver のサブクラス化を検討していますが、どこに何かを注入できるか、またはこれが適切なアプローチであるかどうかはわかりません。

4

0 に答える 0