识别首次启动应用程序的问题

时间:2013-02-05 20:45:32

标签: ios objective-c

我正在关注this answer,以便在应用首次启动后显示一些简介信息。

- (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-");
}
...
}

问题是......它不起作用。我在我的设备上测试这个。一旦我点击完全关闭应用程序然后重新启动我再次收到“第一次”消息。有什么想法这个方法有什么问题吗?我很感激你的帮助。

3 个答案:

答案 0 :(得分:3)

如果YES已经hasSeenTutorial(在其他地方),您只需为hasSeenTutorial设置YES。只需将其(和synchronize)移动到if

的第一部分即可

答案 1 :(得分:3)

你应该在if中设置Bool值而不在else中设置。现在bool值永远不会被设置

答案 2 :(得分: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-");
    }

    // ...
}