Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
iOS:在本地保存高分_Ios_Save - Fatal编程技术网

iOS:在本地保存高分

iOS:在本地保存高分,ios,save,Ios,Save,我想保存一个高分,仅供本地使用。一个整型,它保持你的最高分数,这样我就可以在新分数出现时对它进行测试 你会推荐使用plist吗 比如: NSString *path = [[NSBundle mainBundle] bundlePath]; NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"]; NSDictionary *plistData = [[NSDictionary dictionaryWit

我想保存一个高分,仅供本地使用。一个整型,它保持你的最高分数,这样我就可以在新分数出现时对它进行测试

你会推荐使用plist吗

比如:

NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Info.plist"];
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain];

versionLabel = [[UILabel alloc] initWithFrame:CGRectMake(100,100,60,25)]; // for example
versionLabel.backgroundColor = [UIColor clearColor];
versionLabel.textColor = [UIColor whiteColor];
versionLabel.font = [UIFont systemFontOfSize:10];
NSString *versionString = [NSString stringWithFormat:@"v%@", [plistData objectForKey:@"CFBundleVersion"]];
versionLabel.text = versionString;
[self.view addSubview:versionLabel];

下次打开应用程序时,这些数据是否可用?

IMHO最快、最简单的方法是使用NSUserDefaults。您可以获得对plist的读/写速度,但不需要为单个值创建一个全新的文件。设置高分的代码如下所示

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"];
轰,这就是你所需要的。然后,当你下一次启动应用程序并想检查高分时,也许是-voidgameEnded方法,或者-voidviewDidLoad,你只需说

NSInteger lastHighScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"high_score"];

lastHighScore现在将是存储在用户默认值中的值,您以前保存过该值。如果密钥已经存在,使用setInteger:forKey:将覆盖上一个值。

IMHO最快、最简单的方法是使用NSUserDefaults。您可以获得对plist的读/写速度,但不需要为单个值创建一个全新的文件。设置高分的代码如下所示

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"];
轰,这就是你所需要的。然后,当你下一次启动应用程序并想检查高分时,也许是-voidgameEnded方法,或者-voidviewDidLoad,你只需说

NSInteger lastHighScore = [[NSUserDefaults standardUserDefaults] integerForKey:@"high_score"];

lastHighScore现在将是存储在用户默认值中的值,您以前保存过该值。如果密钥已经存在,则使用setInteger:forKey:将覆盖以前的值。

这很好,但对于那些希望最终通过game center或ngmoco或其他方式将这些分数设置为全局分数的人来说,有一个警告:NSUserDefaults只是一个plist。对于一个手机被越狱的人来说,通过改变这些值来给自己打高分是极其微不足道的。这很好。我从来没有对GameCenter做过任何事情,也从来没有用一部坏掉的手机对黑客做过任何事情。谢谢你的洞察力!如果要立即将其写入磁盘,请不要忘记同步。或者,当您需要它时,它可能不存在[[NSUserDefaults standardUserDefaults]synchronize];这很有效,但对于那些希望最终通过游戏中心或ngmoco或其他方式将这些分数全球化的人来说,有一个警告:NSUserDefaults只是一个plist。对于一个手机被越狱的人来说,通过改变这些值来给自己打高分是极其微不足道的。这很好。我从来没有对GameCenter做过任何事情,也从来没有用一部坏掉的手机对黑客做过任何事情。谢谢你的洞察力!如果要立即将其写入磁盘,请不要忘记同步。或者,当您需要它时,它可能不存在[[NSUserDefaults standardUserDefaults]synchronize];