保存游戏中心数据的良好做法(GKTurnBasedMatch)?

Posted

技术标签:

【中文标题】保存游戏中心数据的良好做法(GKTurnBasedMatch)?【英文标题】:Good Practice to save game center data (GKTurnBasedMatch)? 【发布时间】:2013-04-10 23:47:10 【问题描述】:

我正在使用游戏中心制作游戏应用。

我想问在应用程序中保存整个对象(GKTurnBasedMatch)等游戏数据的好习惯是什么?

因为,每场比赛都有 matchData。我打算将这个 GKTurnBasedMatch 保存在 NSDefault 中,但是从 nsdefault 中检索它没有运气。那么,有什么好的方法吗?

大家能给我一些建议吗?我的考虑只是如果我更新应用程序,NSDefault 数据会在应用程序更新后被删除吗?

【问题讨论】:

【参考方案1】:

存储这些对象根本不是一个好习惯。 Game Kit 的“真相”在 Game Center,因此您的应用应该从 Game Center 检索最新信息,以确保一切都是最新的。想象一下,如果您的用户有两台不同的设备,并在一台设备上玩游戏;如果另一台设备依赖于共享状态,那么它将错过更新。

当您的应用启动时,使用+[GKTurnBasedMatch loadMatchesWithCompletionHandler:] 找出当前正在进行的匹配。如果您需要在比赛中存储自定义数据,请将其存储在比赛的 matchData 属性中,以便与 Game Center 同步。

如果您想支持某种有限的离线显示,我会采用您需要的属性来显示和存储与比赛 ID 相关联的那些(这样您就可以在获得时将其匹配回现场比赛重新连接到 Game Center。例如,您可以存储比赛参与者的姓名和当前消息。这些都只是字符串,因此您可以轻松地使用用户默认值中的比赛 ID。

【讨论】:

是的,你是对的,但我想做的是,当用户没有互联网时,我需要向他们展示最新的匹配。这就是为什么我需要将其保存在应用程序中。你有什么想法吗? 如果我的 matchData 是一个 NSDictionary,你会将它保存在应用程序的哪个位置? NSDefault 还是 Coredata? @justicepenny 这取决于您的应用程序的设计,您没有理由不能将其存储在 NSUserDefaults 中。

以上是关于保存游戏中心数据的良好做法(GKTurnBasedMatch)?的主要内容,如果未能解决你的问题,请参考以下文章

在班级中保存文件或频道的良好做法

用户退出 Google Play 服务后保存游戏的最佳做法?

使用 Firebase 的最佳做法(保存)

创建数据可视化网站的良好做法是啥?

读取和处理多个大型数据文件的良好做法?

在 react-redux 应用程序中获取详细 api 数据的良好做法