カスタム クラスを 1 つ作成し、そのクラスのオブジェクトを作成しました。そのオブジェクトを NSUserDefault に保存したいと思います。オブジェクトをユーザーフォールトに設定しているときにエラーが発生します。どうすれば設定できますか?
3 に答える
クラスにNSCodingプロトコルを実装し、protocolsメソッドを実装する必要があります。これは単にシリアル化です。オブジェクトを格納している間、クラスをシリアル化(NSKeyedArchiver)する必要があります。検索と同じように、そのオブジェクトをシリアル化解除(NSKeyedUnArchiver)する必要があります。
メソッドは
- (void)encodeWithCoder:(NSCoder *)aCoder;
- (id)initWithCoder:(NSCoder *)aDecoder;
最も可能性の高い理由は、構造内にアーカイブするのが難しいものがあることです。
以下は、NSUserDefaults Class Reference からの引用です。
NSUserDefaults クラスは、float、double、integer、Boolean、URL などの一般的な型にアクセスするための便利なメソッドを提供します。デフォルト オブジェクトはプロパティ リスト、つまり、NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary のインスタンス (またはコレクションの場合はインスタンスの組み合わせ) である必要があります。他のタイプのオブジェクトを保存する場合は、通常、アーカイブして NSData のインスタンスを作成する必要があります。詳細については、プリファレンスおよび設定プログラミング ガイドを参照してください。
編集。スティーブンに殴られて、その男に賞を与えてください :)
デフォルト オブジェクトは、プロパティ リスト、つまり、NSData、NSString、NSNumber、NSDate、NSArray、または NSDictionary のインスタンス (またはコレクションの場合はインスタンスの組み合わせ) である必要があります。他のタイプのオブジェクトを保存する場合は、通常、アーカイブして NSData のインスタンスを作成する必要があります。
のインスタンスを作成する最も簡単な方法NSData
は、 を使用することNSKeyedArchiver
です。