0

私はアプリに取り組んでおり、文字列を保存する必要がありました。このコードを使用してデフォルトを設定しました。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:CertificateKey.stringValue forKey:@"SavedKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@",[defaults objectForKey:@"SavedKey"]);

私はそれを記録したので、それが保存されたことを知っています...まあ、それは私に価値を示しました。アプリケーションを開くとき、これを使用してデフォルトを取得します。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[CertificateKey setStringValue:[defaults objectForKey:@"SavedKey"]];
[CertificateKey setTitleWithMnemonic:[defaults objectForKey:@"SavedKey"]];
[[NSUserDefaults standardUserDefaults] synchronize];

なぜデフォルト値を取得しないのですか?完全に保存しませんでしたか?

4

2 に答える 2

2

xcodeの停止ボタンを押してアプリケーションを終了しないでください。代わりに、アプリケーションアイコンを右クリックし、[終了]を選択して終了します。

編集

たぶん、アプリケーションを初めて実行するときは、いくつかのデフォルトを保存したいが、アプリケーションを実行する2回目以降はデフォルトを設定したくないでしょう。

この目的のために、いくつかのクラス初期化メソッドで、次のようにデフォルトを登録します。

+ (void) initialize
{
    NSUserDefaults* defaults= [NSUserDefaults standardUserDefaults];
    [defaults registerDefaults: @{} ];
    // This case it's an empty dictionary, but you can put whatever you want inside it.
    // just convert it to data if it's not an object storable to a plist file.
}

また、setValue:forKey:を使用しています。このメソッドは、NSObjectから継承されます。setObject:forKey:を使用します。

最後にデフォルトを保存する場合は、finalizeを使用します。

- (void) finalize
{
    // Save the defaults here
}
于 2013-01-27T00:23:09.167 に答える
-1

NSUserDefaults のインスタンスを作成しているため、問題が発生する可能性があります。[[NSUserDefaults standardUserDefaults] setValue:@"Pikachu" forKey:@"Best Pokemon Ever"]; [[NSUserDefaults standardDefaults] objectForKey:@"Best Pokemon Ever"]; 私が理解していることから、実際にインスタンスを作成するのではなく、次のようにアクセスすることになっています。

于 2013-01-27T00:43:39.590 に答える