Swift + Locksmith:没有获取存储的钥匙串值

所以我似乎有一些问题从钥匙链获得这个价值。

这是我用来保存密码。 这在第二个视图控制器上被调用。

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") } 

当我运行的应用程序,我得到:

没有密码

在控制台。 但是,当我在let词典上设置断点,然后在控制台中键入po字典时,我得到这个输出:

 Optional <Dictionary<String, AnyObject>> Some : 1 elements [0] : 2 elements - .0 : "password" - .1 : Boom123456 

所以它在那里,任何人都可以看到为什么我的代码没有从钥匙串获取密码?

看起来你是不正确的拉出你的“密码”string的字典。 在这种情况下不要使用.stringValue函数。 改变这一行:

 if let passwordSaved = dictionary!["password"]?.stringValue { 

 if let passwordSaved = dictionary!["password"] as? String {