Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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_Swift_Sprite Kit_Keychain - Fatal编程技术网

Ios 使用钥匙链保存分数

Ios 使用钥匙链保存分数,ios,swift,sprite-kit,keychain,Ios,Swift,Sprite Kit,Keychain,我正在用Spritekit开发一款游戏,现在我必须跟踪用户的高分。有各种不同的存储方法,最简单的方法是NSUserDefaults,但建议使用首选项 但是,我发现这个Keychain包装器倾向于用键保存字符串: 你觉得用它好吗?我的想法是在保存之前将分数(整数)转换为字符串,在检索高分时,我会将其从字符串转换回Int。你认为这是个好主意吗?我可以看到的钥匙链的主要优点是,当删除应用程序时,条目仍然存在,并且不容易更改。UserDefaults将绑定到您的应用Id,并在应用删除时丢失:除非您使用

我正在用Spritekit开发一款游戏,现在我必须跟踪用户的高分。有各种不同的存储方法,最简单的方法是NSUserDefaults,但建议使用首选项

但是,我发现这个Keychain包装器倾向于用键保存字符串:


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

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

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

根据你拿高分的严重程度,你应该考虑与游戏中心整合吗?如果您希望在多台设备上保持高分etc,这是一个理想选择


当使用钥匙链作为存储方法时,可以/应该存储的首选数据量是多少?谢谢我想说的是,您应该只将其用于密码、虚拟硬币、高分或您想要共享的小块信息(icloud keychain),并防止通过其他机制轻松访问。此外,对于可能需要在应用程序重新安装(而不是应用程序重新启动)后继续运行的项目。任何更大的东西都应该进入文件系统IMHOThanks以获得响应Rory。是的,我将集成Gamecenter,但在与Gamecenter同步之前,我首先需要在本地保存高分。不是这样吗?因为如果没有网络连接,应用程序必须将其存储在本地。你是对的,但在使用game center时,你需要调整操作方式以适应该服务。Apple提供了一个示例,展示了如何加载分数,包括离线处理: