Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c AppDelegate int值不断重置_Objective C - Fatal编程技术网

Objective c AppDelegate int值不断重置

Objective c AppDelegate int值不断重置,objective-c,Objective C,在我的项目AppDelegate文件中,我声明了一个名为CorrectAnswerScontr1的int。因此,在应用程序中,他们进行一个小测验,该变量跟踪他们得到了多少正确答案。现在,在项目的其他地方,我使用这个变量,如下所示: int r1score=appDelegate.correctAnswersCountR1; 问题是,如果我退出应用程序并返回,该值显然不会被记住,并被设置回其默认值。如何存储此号码,以便在用户关闭应用程序并返回时记住此号码?您可以使用NSUserDefaults存

在我的项目AppDelegate文件中,我声明了一个名为CorrectAnswerScontr1的int。因此,在应用程序中,他们进行一个小测验,该变量跟踪他们得到了多少正确答案。现在,在项目的其他地方,我使用这个变量,如下所示:

int r1score=appDelegate.correctAnswersCountR1;

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

您可以使用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"];

您可以使用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"];

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


编辑:对于这个特定的场景,奥斯卡的答案似乎更合适,尽管这取决于你的应用程序的计划,核心数据或文件可能是一个不错的选择。

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


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

你需要对NSUserDefaults做一些研究


另一方面,将数据存储在AppDelegate中并不被认为是最佳做法。您需要对NSUserDefaults进行一些研究


另一方面,将数据存储在AppDelegate中不是最佳做法,您必须使用首选项存储机制。我对iPhone工具包不太熟悉,但在MacOSX和Cocoa上有
NSUserDefaults
。当应用程序启动时,您将通过
[[NSUserDefaults standardUserDefaults]intForKey:@“count”]
从用户默认值(首选项)加载值,并且每当值更改时,您将调用
[[NSUserDefaults standardUserDefaults]setInt:answerCount…forKey:@“count”]

您必须使用首选项存储机制。我对iPhone工具包不太熟悉,但在MacOSX和Cocoa上有
NSUserDefaults
。当应用程序启动时,您将通过
[[NSUserDefaults standardUserDefaults]intForKey:@“count”]
从用户默认值(首选项)加载值,并且每当值更改时,您将调用
[[NSUserDefaults standardUserDefaults]setInt:answerCount…forKey:@“count”]

我很确定您希望将该值写入文件以使其持久化

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


因此,当用户切换时,它会关闭应用程序并重新启动它。

我很确定您希望将该值写入一个文件,以使其持久化

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


因此,当用户切换时,它会终止应用程序并重新启动它。

NSNumber
是-1开始出现之前的包装器。@Joe您是正确的,虽然您可以使用便利方法setInteger来实现,但刚刚更新。
NSNumber
是-1开始出现之前的包装器。@Joe您是正确的,虽然您可以使用方便的方法setInteger来实现,但刚刚更新。