0

私はテーブルビューを持っています。そこにデータを追加したい。私はネットサーフィンをして、そのためのサンプルコードをいくつか見つけました。ただし、それらの多くは NSKeyedUnarchiver (エンコード、デコード) を使用しています。なぜこれを行う必要があるのですか?具体的な理由は?

4

2 に答える 2

2

特定のクラスについて質問がある場合は、Apple のドキュメントを参照することをお勧めします。これはドキュメントから直接引用したものです。

NSCoder の具体的なサブクラスである NSKeyedArchiver は、オブジェクト (およびスカラー値) を、ファイルに格納できるアーキテクチャに依存しない形式にエンコードする方法を提供します。オブジェクトのセットをアーカイブすると、各オブジェクトのクラス情報とインスタンス変数がアーカイブに書き込まれます。NSKeyedArchiver のコンパニオン クラスである NSKeyedUnarchiver は、アーカイブ内のデータをデコードし、元のセットと同等のオブジェクトのセットを作成します。

キー付きアーカイブは、アーカイブにエンコードされたすべてのオブジェクトと値に名前またはキーが与えられるという点で、キー付きアーカイブとは異なります。鍵のないアーカイブをデコードする場合、値はエンコードされたのと同じ順序でデコードする必要があります。鍵付きアーカイブをデコードする場合、値は名前で要求されるため、値が順不同でデコードされたり、まったくデコードされなかったりする可能性があります。したがって、キー付きアーカイブは、上位互換性と下位互換性をより適切にサポートします。

エンコードされた値に与えられるキーは、エンコードされている現在のオブジェクトの範囲内でのみ一意である必要があります。キー付きアーカイブは階層的であるため、オブジェクト A がインスタンス変数をエンコードするために使用するキーは、オブジェクト A と B が同じクラスのインスタンスであっても、オブジェクト B が使用するキーと競合しません。ただし、1 つのオブジェクト内では、サブクラスで使用されるキーがそのスーパークラスで使用されるキーと競合する可能性があります。

NSArchiver オブジェクトは、アーカイブ データをファイルまたは指定した可変データ オブジェクト (NSMutableData のインスタンス) に書き込むことができます。

詳しくは自分の目で確かめてください

于 2012-08-01T11:18:48.950 に答える
2

これは、アプリでデータを保存および復元する方法です。iOS でデータを保存および取得するには、いくつかの方法があります。コア データ、SQLite、plists。NSKeyedArchiverデータ永続化のための理解しやすく使いやすいクラスです。よく目にする理由は、初心者にとって簡単なコンセプトだからだと思います。他のデータ永続化方法は、理解しにくいものです。

于 2012-08-01T11:26:40.180 に答える