【发布时间】:2013-11-23 20:47:31
【问题描述】:
在 iOS6 中,以下代码可以正常工作。首次启动后,hasLoaded BOOL 为 YES。
BOOL hasLoaded = [[NSUserDefaults standardUserDefaults] boolForKey:kUserDefaultFirstLaunch];
if (!hasLoaded){
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kUserDefaultFirstLaunch];
[[NSUserDefaults standardUserDefaults] synchronize];
//do first launch stuff
}
但在 iOS7 中,每次我运行应用程序时,hasLoaded 都是 NO,即使我明确将其设置为 YES 并进行同步。我看过其他几篇关于此的帖子,但没有解决方案。这将是一个巨大的错误,我无法相信它真的是苹果的错误。请告诉我我错了。在 iOS7 上真的没有应用可以可靠地使用 NSUserDefaults 吗?
我已经在模拟器和设备上对此进行了测试。
【问题讨论】:
-
该代码在我的 iOS 7 模拟器上按预期工作。
-
您查看过
NSUserDefaults文件吗? -
检查用户默认文件是一个很好的建议(您可以在应用程序包的库/首选项中找到它)。 - 只是为了确保:那是你真正的未经修改的代码吗? kUserDefaultFirstLaunch 是如何定义的?您是否使用不包含任何其他内容的新应用对其进行了测试?
-
在运行时检查
dictionaryRepresentation也有助于发现错误值。
标签: ios ios7 nsuserdefaults