2015-02-09 84 views
1

我正在用Spritekit开发一款游戏,现在我需要跟踪用户的高分。有各种不同的存储方法,最简单的方法是NSUserDefaults,但推荐用于首选项。用钥匙扣节省分数

然而,我发现这个钥匙扣包装趋向于节约串用钥匙:

https://github.com/jrendel/SwiftKeychainWrapper

你觉得这是很好用吗?我的想法是在保存它之前将得分(Integer)转换为一个字符串,并在检索高分时,将其从String转换为Int。你认为这是一个好主意吗?

回答

1

我可以看到的关键链的主要优点是,当应用程序被删除且不能轻易更改时,条目仍然存在。 UserDefaults将与您的应用Id绑定,并在应用删除时丢失:除非您使用了全局域。

您可以使用CloudKit键/值存储实现跨设备高分,将数​​据存储在云中。这将是更多的工作,你需要添加冲突解决。

根据你高分的认真程度,你应该考虑与Game Center整合?理想的情况下,如果你想得到高分等,坚持跨越多个设备。

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/GameKit_Guide/LeaderBoards/LeaderBoards.html

+0

什么是可以/应当使用钥匙链作为存储方法时要存储的数据的优选量?谢谢! – Whirlwind 2015-02-09 11:00:16

+1

我想说你应该只用它来输入密码,虚拟硬币,高分或你想分享的小信息(icloud keychain),并防止通过其他机制轻松访问。此外,对于重新安装应用程序而不是应用程序重新启动的情况,您可能需要使用这些项目。任何更大的应该进入文件系统恕我直言 – 2015-02-09 11:44:46

+0

感谢您的反应罗里。是的,我将整合Gamecenter,但我将首先在本地保存高分,然后再与Gamecenter同步。不是这样吗?因为如果没有网络连接,应用程序必须将其存储在本地。 – ah786 2015-02-09 14:23:10