iOS:在本地保存高分

Posted

技术标签:

【中文标题】iOS:在本地保存高分【英文标题】:iOS: Saving high-score locally 【发布时间】:2012-03-29 14:09:06 【问题描述】:

我想保存一个高分仅供本地使用。一个 int,它保存着你的最高分,所以当得到一个新的分数时我可以用它来测试。

你会推荐使用 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];

下次打开应用时是否可以使用这些数据?

【问题讨论】:

【参考方案1】:

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

[[NSUserDefaults standardUserDefaults] setInteger:100 forKey:@"high_score"];

繁荣,这就是你所需要的。然后,当您下次启动应用程序并想要检查该高分时,可能在 -(void)gameEnded 方法或 - (void)viewDidLoad 中,您只需说

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

lastHighScore 现在将是您之前保存的用户默认值中存储的值。如果 key 已经存在,使用 setInteger:forKey: 会覆盖之前的值。

【讨论】:

这很好用,但是对于那些想要最终使这些分数全球化(即使用游戏中心或 ngmoco 或其他)的人来说,请注意:NSUserDefaults 只是一个 plist。对于越狱手机的人来说,进入并更改这些值以给自己高分是非常微不足道的。 很高兴知道这一点。我从来没有对 GameCenter 做过任何事情,也没有用破过牢的手机破解 plist。感谢您的洞察力! 不要忘记同步(如果您希望它立即写入磁盘。或者当您需要它时它可能不存在)[[NSUserDefaults standardUserDefaults] 同步];

以上是关于iOS:在本地保存高分的主要内容,如果未能解决你的问题,请参考以下文章

高分求怎么看mysql用blob类型储存的密码.我用的是navicat.

如何在 libGDX 上保存高分

Unity 3d 保存高分错误

如何快速保存高分

如何在 LIBGDX 中保存高分

使用 UserDefaults 快速保存高分