2016-07-05 142 views
0

所以我似乎有一些问题从Keychain获取这个值。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") 
    } 

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

无密码

在控制台中。然而,当我设置的让利字典破发点然后键入PO字典在控制台中我得到这样的输出:

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

所以它的存在,任何人都可以明白为什么我的代码是没有得到的来自钥匙串的密码?

+0

你运行模拟器的应用程序? –

+0

@LorenzoBoaro yup – JamesG

回答

3

看起来像是在您的“密码”字符串中错误地拉出字典。在这种情况下不要使用.stringValue函数。改变这一行:

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

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