Swift&x2B;锁匠:不储存价值
我试图在游戏结束时存储一个值 我正在使用updateData方法 它在Github回购协议上写着 除了替换现有数据外,如果密钥链不存在,还会将数据写入密钥链 请尝试Locksmith.updateData([“某个键”:“另一个值”],forUserAccount:“myUserAccount”) 这就是我所拥有的:Swift&x2B;锁匠:不储存价值,swift,keychain,Swift,Keychain,我试图在游戏结束时存储一个值 我正在使用updateData方法 它在Github回购协议上写着 除了替换现有数据外,如果密钥链不存在,还会将数据写入密钥链 请尝试Locksmith.updateData([“某个键”:“另一个值”],forUserAccount:“myUserAccount”) 这就是我所拥有的: let dictionary = Locksmith.loadDataForUserAccount("gameKeyChainValues")
let dictionary = Locksmith.loadDataForUserAccount("gameKeyChainValues")
print("Ended \(EndDateAndTimeString)")
do {
try Locksmith.updateData(["BattleEnd": "12345678"], forUserAccount: "gameKeyChainValues")
}
catch {
print("Unable to set time")
}
print("This line ran")
if let timeBattleEnded = dictionary!["BattleEnd"] as? String {
print("Stored for END: \(timeBattleEnded)")
}
此行打印(“结束(EndDateAndTimeString)”)输出:
结束时间:19:33:38+2016-08-05
该行打印(“无法设置时间”)不起任何作用
此行打印(“此行已运行”)输出:
这条线跑了
这一行:打印(“存储用于结束:(timeBattleEnded)”)不起任何作用
当我设置断点,然后在控制台中键入po dictionary时,它会显示其他已设置的内容,但不会显示此值
有人知道为什么吗
编辑:
所以,在检查控制台之后。看起来,在我将信息保存到钥匙链后,它就在那里了。然后切换视图并更新钥匙链中的另一项。这似乎删除了原来的项目,只保留了新的项目。两者都有不同的名字
有什么想法吗?您在第一行中获取的字典不是一个不断更新的钥匙链视图,它只是您调用该方法时钥匙链中内容的副本。当您更新钥匙链时,它不会被更新。如果要在更新密钥链后从密钥链中取出最新值,请在更新后再次调用
loadDataForUserAccount()
。,用matthew palmer的话说:
一个帐户下只存储一段数据,因此当您调用updateData时,它将覆盖当前为该帐户存储的任何数据
因此,每次调用Locksmith.updateData时,它基本上会清除其中的所有数据,然后添加新值。您需要同时发送键和值
试试这个:
try Locksmith.updateData(["BattleEnd": "12345678", "Key2": "Value Two"], forUserAccount: "gameKeyChainValues")
使用您所说的,我可以看到该项目,但只有在我切换视图并保存另一个项目之前。请参见编辑。