0

次のように、ブール値を NSUserDefaults に保存します。

[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"password"];

そして、次のようにデフォルトを同期します。

[[NSUserDefaults standardUserDefaults]synchronize];

しかし、アプリがバックグラウンドに入ってからフォアグラウンドに入ると、bool の値がYES

なぜそれが起こるのですか?bool をYESプログラム内の 1 か所だけに設定しました。これは、アプリがフォアグラウンドを離れたり入ったりするタイミングを管理していません。

ありがとう!

4

3 に答える 3

2

boolを次のように保存する簡単なテストを実行するだけです

[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"password"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"%d",[[NSUserDefaults standardUserDefaults] boolForKey:@"password"]);

値が何であるかを参照してください..

于 2012-06-07T10:10:11.287 に答える
1

検索コードは次のようになります。

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"password"]) {
    //False
} else {
    //True
}
于 2012-06-07T10:09:26.600 に答える
0

ブール値を取得するときは、正しいキー文字列 (@"password"あなたの場合) があることを確認してください。大文字と小文字が区別されます。

[[NSUserDefaults standardUserDefaults] boolForKey:@"password"];

プロジェクト全体でこのキーのテキスト検索を行うと、問題のあるコードが見つかります。

于 2012-06-07T10:05:45.017 に答える