Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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 KeychainWrapper作为存储highScore的NSUserDefaults的替代品_Ios_Swift_Keychain - Fatal编程技术网

Ios KeychainWrapper作为存储highScore的NSUserDefaults的替代品

Ios KeychainWrapper作为存储highScore的NSUserDefaults的替代品,ios,swift,keychain,Ios,Swift,Keychain,您好,我创建了一个应用程序,用于在NSUserDefaults中存储高分,并将在每次启动游戏时使用以下代码加载highScore: var highScore = NSUserDefaults.standardUserDefaults().integerForKey("highScore") 然后我听说它很容易修改,所以我想我会使用钥匙链。我对钥匙链了解不多,然后我发现它看起来很容易实现。我正在使用这个代码 var highScorestring: String = KeychainWrapp

您好,我创建了一个应用程序,用于在
NSUserDefaults
中存储高分,并将在每次启动游戏时使用以下代码加载
highScore

var highScore = NSUserDefaults.standardUserDefaults().integerForKey("highScore")
然后我听说它很容易修改,所以我想我会使用钥匙链。我对钥匙链了解不多,然后我发现它看起来很容易实现。我正在使用这个代码

var highScorestring: String = KeychainWrapper.stringForKey("highScore")!
var highScore = Int(highScorestring)
但是,每次应用程序启动时,在展开可选值时,我都会得到一个
find nil,我怀疑这是由于第一行代码强制展开
highScorestring


我猜Keychain退出后不会真正保留数据?我在没有强制展开的情况下对它进行了测试,但是做了一个
let if
highScore
始终为0,因为代码没有运行。有人能解释一下为什么会发生这种情况吗?

您的钥匙链代码用于读取存储值。显然,你的应用程序第一次运行时不会有分数。你需要处理那个案子,伙计,我是个笨蛋。在星巴克度过了漫长的一天。现在效果很好!谢谢(爱你的工作顺便说一句)请注意,修改keychain并不比修改NSUserDefaults更难。可能有点难,因为它没有通过iTunes进行同步,但对于越狱手机来说并不是什么挑战。那么什么会更好呢?不仅用于高分,还用于解锁IAP功能?您的钥匙链代码用于读取存储值。显然,你的应用程序第一次运行时不会有分数。你需要处理那个案子,伙计,我是个笨蛋。在星巴克度过了漫长的一天。现在效果很好!谢谢(爱你的工作顺便说一句)请注意,修改keychain并不比修改NSUserDefaults更难。可能有点难,因为它没有通过iTunes进行同步,但对于越狱手机来说并不是什么挑战。那么什么会更好呢?不仅是为了高分,也是为了解锁IAP功能?