Iphone 使用NSUserDefaults保存和加载数据时需要帮助
我正在开发一款新的iPhone应用程序,目前我正在尝试使用NSUserDefaults保存和加载高分。 我的问题是:我应该使用什么代码将保存的高分分配给名为highscorespointer1的变量,该变量是指向NSInteger的指针? 我目前使用的代码如下所示: 我在这里保存最高分。请注意,变量highscore1属于NSInteger类型:Iphone 使用NSUserDefaults保存和加载数据时需要帮助,iphone,objective-c,ios,loading,nsuserdefaults,Iphone,Objective C,Ios,Loading,Nsuserdefaults,我正在开发一款新的iPhone应用程序,目前我正在尝试使用NSUserDefaults保存和加载高分。 我的问题是:我应该使用什么代码将保存的高分分配给名为highscorespointer1的变量,该变量是指向NSInteger的指针? 我目前使用的代码如下所示: 我在这里保存最高分。请注意,变量highscore1属于NSInteger类型: -(IBAction)saveData{ NSUserDefaults *defaults = [NSUserDefaults stand
-(IBAction)saveData{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:highscore1 forKey:@"H1"];
[defaults synchronize];
}
在这里,我加载了最高分。但我得到了以下警告:“来自不兼容指针类型的赋值”:
setInteger:forKey
方法设置的是int
,而不是int*
,这意味着它设置的是值,而不是指针。确保您的高分点1
是int
,而不是int*
。无论如何,保存指向整数的指针是没有意义的,但是实际的整数本身应该被保存。希望有帮助 并使用integerworkey:
检索整数,而不是objectForKey:
。此时,发帖人正试图将指向对象的指针指定给指向文字的指针。非常感谢!我照你说的做了,效果很好。不过我还有一个问题:当我之前将保存的数据分配给指针时,我可以使用这行代码:if(highscorepointer1==nil){highscore1=0;}
将highscore设置为零,如果这是第一次执行应用程序。现在我将加载的数据直接分配给整数highscore1,是否有类似的方法可以使用?实际上,默认情况下,如果使用highscore1=[[NSUserDefaults standardUserDefaults]IntegerWorkey:@“H1”]代码>,但尚未设置,则highscore1
将等于0
。
highscorepointer1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"H1"];