1

私はシミュレーターを使用していますが、アプリが初めて開かれたかどうかを確認し始めたときに、次のようなことをしています。

次に、そのキー/値が空であるかどうかを確認して、このコードが1回だけ実行されるようにします。

 NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if([standardUserDefaults objectForKey:@"first_time_cookie"] == nil)
    {
        [standardUserDefaults setBool:YES forKey:@"first_time_cookie"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }

しかし、私がプログラムを実行するたびに、それは再び実行されます。ここで何がうまくいかないのか分かりますか?

4

4 に答える 4

2

ただの推測:standardUserDefaultsnilですか?

于 2012-07-26T18:56:09.293 に答える
1

あなたは違うことをすることができます!

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], @"first_time_cookie"];
[defaults registerDefaults:dict];

if ([defaults boolForKey:@"first_time_cookie"] == NO){
   [defaults setBool:YES forKey:@"first_time_cookie"];
   [defaults synchronize];
}
于 2012-07-26T19:01:39.433 に答える
0

使ってみてください

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"first_time_cookie"] == false)

それが機能するかどうか教えてください、

ガン・ホー

于 2012-07-26T19:07:23.117 に答える
0

ブール値はオブジェクトではありません。これはうまくいくはずです

if([standardUserDefaults boolForKey:@"first_time_cookie"] == NO)
{
    [standardUserDefaults setBool:YES forKey:@"first_time_cookie"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2012-07-26T18:59:11.943 に答える