AppDelegate int值不断重置

时间:2011-08-04 20:28:49

标签: objective-c

在我的项目AppDelegate文件中,我有一个名为correctAnswersCountR1的int声明。因此,在应用程序中,他们会进行一个小测验,该变量会跟踪他们获得的正确答案数量。现在在项目的其他地方我使用这个变量:

int r1score=appDelegate.correctAnswersCountR1;

问题是,显然如果我退出应用程序并返回,则不会记住该值,并将其设置回其默认值。我如何存储这个号码,以便在用户关闭应用程序并返回时记住它?

5 个答案:

答案 0 :(得分:3)

您可以使用NSUserDefaults存储您的值:

**Saving**
//Do this right before the app exits
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// saving an NSInteger
[prefs setInteger:42 forKey:@"integerKey"];

// This is suggested to synch prefs, but is not needed
[prefs synchronize];

**Retrieving**
//Do this when your app is loaded again
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

// getting an NSInteger
NSInteger myInt = [prefs integerForKey:@"integerKey"];

答案 1 :(得分:0)

您可以为项目设置核心数据,但除非您计划为应用程序持久存储更多信息,否则Core Data可能会有点过分。您也可以尝试将其写入文件,然后在加载时读取它。

编辑:对于这个特定场景,奥斯卡的回答似乎更合适,但取决于您计划使用您的应用程序的位置,CoreData或文件可能是一个不错的选择。

答案 2 :(得分:0)

您需要对NSUserDefaults进行一些研究。

Here is the apple documentation

另一方面,将数据存储在AppDelegate

中并不是最佳做法

答案 3 :(得分:0)

您必须使用首选项存储机制。我不太熟悉iPhone工具包,但在Mac OS X和Cocoa上有NSUserDefaults。当您的应用启动时,您会从用户默认值(首选项)到[[NSUserDefaults standardUserDefaults] intForKey:@"count"]加载值,每当值发生变化时,您都会调用[[NSUserDefaults standardUserDefaults] setInt:answerCount... forKey:@"count"]

答案 4 :(得分:0)

我很确定你想将值写入文件以使其持久化。

这是因为移动到后台的应用程序可能会被终止,例如,如果系统测量到它需要更多内存。

因此它会杀死应用程序并在用户切换时重新启动它。