我试图在游戏结束时存储一个值.
我使用的是https://github.com/matthewpalmer/Locksmith updateData方法.
它在Github Repo上说
除了替换现有数据之外,如果已经存在,则将数据写入钥匙串
尝试Locksmith.updateData(["some key":"另一个值"],forUserAccount:"myUserAccount")
这就是我所拥有的:
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)")
}
Run Code Online (Sandbox Code Playgroud)
此行打印("Ended(EndDateAndTimeString)")输出:
结束时间19:33:38 + 2016-08-05
此行打印("无法设置时间")不执行任何操作
此行打印("此行运行")输出:
这条线跑了
这一行:print("存储为END :( timeBattleEnded)")不执行任何操作.
当我设置一个断点,然后在控制台中键入po字典时,它会向我显示已设置的其他内容但不是此值.
谁能明白为什么?
编辑:
所以,检查完控制台后.它确实出现在我将信息保存到钥匙串后它就在那里.然后我切换视图并更新钥匙串中的另一个项目.这似乎删除了原来的一个,只保留新项目.两者都有不同的名称.
有任何想法吗?
用马修·帕尔默的话来说:
一个帐户下只存储一份数据,因此当您调用 updateData 时,它将覆盖该帐户当前存储的所有数据
因此,每次调用 Locksmith.updateData 时,它基本上都会清除其中的所有数据,然后添加新值。您需要将键和值一起发送。
尝试这个:
try Locksmith.updateData(["BattleEnd": "12345678", "Key2": "Value Two"], forUserAccount: "gameKeyChainValues")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |