-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

您只设置YESif hasSeenTutorialis hasSeenTutorialalready YES(它在 else 中)。只需将它(和synchronize)移动到 if 的第一部分

于 2013-02-05T20:48:06.600 回答
3

您应该在 if 而不是在 else 中设置 Bool 值。现在永远不会设置布尔值

于 2013-02-05T20:48:15.720 回答
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 回答