-1

この回答に従って、アプリが初めて起動されたときに小さなイントロ メッセージを表示します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...    
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"hasSeenTutorial"]){
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"hasSeenTutorial"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [interface addHelpCards:nil];
    NSLog(@"-First Time-");
} else {
    NSLog(@"-Not First Time-");
}
...
}

問題は...うまくいかないことです。私は自分のデバイスでこれをテストしています。ダブルタップしてアプリを完全にシャットダウンしてから再起動するとすぐに、「初回」メッセージが再び表示されます。このアプローチの何が問題なのか、何か考えはありますか? よろしくお願いします。

4

3 に答える 3

3

動かない場合は足を食べます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...

    id _object = [[NSUserDefaults standardUserDefaults] valueForKey:@"hasSeenTutorial"];

    if (_object == nil) {
        [[NSUserDefaults standardUserDefaults] setValue:@(TRUE) forKey:@"hasSeenTutorial"];
        [[NSUserDefaults standardUserDefaults] synchronize];

        NSLog(@"-First Time-");
    } else {

        NSLog(@"-Not First Time-");
    }

    // ...
}
于 2013-02-05T21:20:43.117 に答える
3

if is alreadyの場合にのみ設定YESしています(それはelseにあります)。それ(および)をifの最初の部分まで移動するだけですhasSeenTutorialhasSeenTutorialYESsynchronize

于 2013-02-05T20:48:06.600 に答える
3

if では Bool 値を設定し、else では設定しないでください。現在、ブール値は決して設定されません

于 2013-02-05T20:48:15.720 に答える