所以我似乎在从钥匙串中获取此值时遇到了一些问题。
这是我用来保存密码的方法。这在第二个视图控制器上调用。
do {
try Locksmith.updateData(["password": "Boom123456"], forUserAccount: "KeychainDemo")
} catch {
print("Unable to set password")
}
当我回到第一个检查钥匙串项目的视图控制器时:
let dictionary = Locksmith.loadDataForUserAccount("KeychainDemo")
if let passwordSaved = dictionary!["password"]?.stringValue {
print("password: \(passwordSaved)")
} else {
print("No Password")
}
当我运行应用程序时,我得到:
无密码
在控制台中。但是,当我在让字典上设置断点,然后在控制台中输入 po字典时,我得到了这个输出:
Optional <Dictionary<String, AnyObject>>
Some : 1 elements
[0] : 2 elements
- .0 : "password"
- .1 : Boom123456
所以它就在那里,任何人都可以看到为什么我的代码没有从Keychain获取密码?
答案 0 :(得分:3)
看起来你错误地将字典中的“密码”字符串拉出来了。在这种情况下,请勿使用.stringValue函数。改变这一行:
if let passwordSaved = dictionary!["password"]?.stringValue {
到
if let passwordSaved = dictionary!["password"] as? String {