Swift + 锁匠:未获取存储的钥匙串值
Swift + Locksmith: Not getting stored Keychain Value
所以我似乎在从钥匙串获取这个值时遇到了一些问题。
这是我用来保存密码的。这是在第二个视图控制器上调用的。
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")
}
当我 运行 我得到的应用程序时:
No Password
在控制台中。但是,当我在 let dictionary 上设置断点,然后在控制台中键入 po dictionary 时,我得到以下输出:
Optional <Dictionary<String, AnyObject>>
Some : 1 elements
[0] : 2 elements
- .0 : "password"
- .1 : Boom123456
就在那里,有人能看出为什么我的代码没有从钥匙串中获取密码吗?
您似乎错误地从词典中提取了 "password" 字符串。在这种情况下不要使用 .stringValue 函数。更改此行:
if let passwordSaved = dictionary!["password"]?.stringValue {
至
if let passwordSaved = dictionary!["password"] as? String {
所以我似乎在从钥匙串获取这个值时遇到了一些问题。
这是我用来保存密码的。这是在第二个视图控制器上调用的。
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")
}
当我 运行 我得到的应用程序时:
No Password
在控制台中。但是,当我在 let dictionary 上设置断点,然后在控制台中键入 po dictionary 时,我得到以下输出:
Optional <Dictionary<String, AnyObject>>
Some : 1 elements
[0] : 2 elements
- .0 : "password"
- .1 : Boom123456
就在那里,有人能看出为什么我的代码没有从钥匙串中获取密码吗?
您似乎错误地从词典中提取了 "password" 字符串。在这种情况下不要使用 .stringValue 函数。更改此行:
if let passwordSaved = dictionary!["password"]?.stringValue {
至
if let passwordSaved = dictionary!["password"] as? String {