【发布时间】:2015-10-12 19:34:31
【问题描述】:
我是一个初学者,想在我的应用程序中存储一个 int 值(高分),因此当用户从多任务处理中关闭应用程序并再次打开它时,它会获取数据并显示它。
我尝试使用 NSUserDefaults,但当我再次打开应用程序时它没有出现。这是我使用的代码:
// Used this to load the high score from the memory
highscoreInt = (int)[[NSUserDefaults standardUserDefaults] integerForKey:@"highscore"];
// And this to store it, later in the code
- (void)applicationWillTerminate:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] setInteger:highscoreInt forKey:@"highscore"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
【问题讨论】:
-
您是否在
applicationWillTerminate:中设置了断点以确保整数被存储? -
不工作是什么意思?它总是显示相同的值吗?
-
applicationWillTerminate在应用程序将从内存中清除时被调用。换句话说,如果你把你的应用程序放到后台,然后再回到前台,这个方法就不会被调用。考虑使用applicationDidEnterBackground或applicationWillResignActive来存储您的分数。要确认这一点,只需在applicationWillTerminate的第一行设置断点,模拟背景/前景,您会看到您的应用不会暂停(断点命中)。 -
“在 Xcode 中”?您确定它是“在 Xcode 中”而不是在您的 iOS 应用中吗?
-
感谢大家的cmets。如问题所述,我是初学者,所以我的方法不太专业。当我说它不起作用时,我的意思是当我重新打开我的应用程序时,该值被重置,是的,它在我的 iOS 应用程序中。我也不知道“设置断点”是什么,所以我没有这样做。再次感谢您的所有 cmets!
标签: ios objective-c int nsuserdefaults