0

以前、セル アクセサリの状態の保存に関してここで回答された質問をしました。私は今、NSUserDefaults で遊んでいます。アプリにいくつかのオプションを正常に保存しましたが、セル アクセサリの状態を NSUserDefaults に保存できないようです。

何度も試してみた結果、何をどこに保存すればよいのか、保存したオプションをどこに呼び出せばよいのかわからないという結論に達しました。

誰でも私を正しい方向に向けることができますか?

ありがとう、

編集:変数を変換する必要がある可能性が高いことは理解していますが、何をいつ変換する必要があるかがわかりません。

4

2 に答える 2

1

あなたが引用した質問では、コードスニペットは という名前のインスタンス変数を使用しています_accessoryStyle。変数の型はNSMutableArrayです。この変数がまだあると仮定すると、次のようにその内容をユーザーのデフォルトに簡単に保存できます。

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self._accessoryStyle forKey:@"aKeyName"];

後でデータを取得したい場合は、次のように実行できます。

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
NSArray* immutableData = [userDefaults arrayForKey:@"aKeyName"]];
[self._accessoryStyle setArray:immutableData];

ではなくarrayForKey:不変の を返すため、取得は少し複雑です。NSArrayNSMutableArray

于 2013-01-08T00:23:22.813 に答える
0

NSData、NSDate、NSString、NSArray、NSDictionary、NSNumber ではないオブジェクトの場合 (plist ファイルに保存できないため)、次のマクロを使用できます。

#define SetDefaultObjectForKey(object, key) [ [NSUserDefaults standardUserDefaults] setObject: [NSKeyedArchiver archivedDataWithRootObject: object] forKey: key]

#define GetDefaultObjectForkey(key) [NSKeyedUnarchiver unarchivedObjectWithData: [ [NSUserDefaults standardUserDefaults] objectForKey: key] ]

したがって、オブジェクトが NSCoding プロトコルを実装している場合、保存時にそれらを NSData に変換し、読み取り時に NSData から元の型にデコードします。そうでない場合は、実装を提供する必要があります。

于 2013-01-06T17:07:25.947 に答える