我有一个Root.plist文件,用于我的应用程序设置。它具有标识为reset_achievements_preference
的拨动开关。在applicationDidBecomeActive
方法中,我有以下代码:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"reset achievements: %i", [[NSUserDefaults standardUserDefaults] boolForKey:@"reset_achievements_preference"]);
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"reset_achievements_preference"]) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"reset_achievements_preference"];
[[NSUserDefaults standardUserDefaults] synchronize];
//Code to react to this change
}
}
有时它会命中NSLog并注意到对象发生了变化,但有时却没有。我想知道我是否处理错误?
最佳答案
尝试添加:
[[NSUserDefaults standardUserDefaults] synchronize]
要先
applicationDidBecomeActive:
刷新其他用户默认状态。您的synchronize
方法由应用程序定期调用,但是您可以手动刷新它。关于ios - 并非总是在applicationDidBecomeActive中检测到Settings.app中切换的选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21526035/