我在google上搜索过,到目前为止还没有运气。
为了确定我的应用程序之前是否已经启动,我使用的代码类似于this StackOverflow answer中的代码。
主要区别在于否定了密钥(FirstLaunch
而不是HasLaunched
):
configuration = [NSUserDefaults standardUserDefaults];
[configuration registerDefaults:[[NSDictionary alloc] initWithObjectsAndKeys:@"YES", @"FirstLaunch", nil]];
if ([configuration boolForKey:@"FirstLaunch"]) {
NSLog(@"aha");
// aha
[configuration setBool:NO forKey:@"FirstLaunch"];
[configuration synchronize];
}
除非我以编程方式将@"aha"
密钥设置为@"FirstLaunch"
,否则永远不会记录重要的YES
邮件。
这是一个错误还是我忽略了什么?我只是出于好奇而要求,因为在链接线程中使用原始密钥可以正常工作。
答案 0 :(得分:4)
您正在将默认值设置为字符串,但将其作为BOOL
读取。
将寄存器默认值调用更改为:
[configuration registerDefaults:[[NSDictionary alloc] initWithObjectsAndKeys:@YES, @"FirstLaunch"]];
您可能应该在该if块中将FirstLaunch
值设置为NO
。