【发布时间】:2017-10-28 23:47:01
【问题描述】:
最后更新
我正在使用 pod 'KeychainSwift',每次我尝试从 Keychain 中获取一些东西时它都会返回 nil,这是我设置值的函数:
private func saveUser(email:String!, password:String!)->Bool{
if keychain.set(email, forKey: "email", withAccess: .accessibleAfterFirstUnlock) {
if keychain.set(password, forKey: "password") {
print("User saved succesfully")
return true
} else {
return false
}
} else {
return false
}
}
func setToken(token:String!){
if keychain.set(token!, forKey: "token", withAccess: .accessibleAfterFirstUnlock) {
print("Success...")
} else {
print("Error: Line 36 GeneraFire")
print(keychain.lastResultCode)
}
}
当我尝试使用此函数检索值时:
func getToken()-> String!{
return keychain.get("token")
}
它返回 nil(getEmail 和 getPassword 也返回 nil)。 我已经打开了钥匙串共享功能并且我有权利。但它就是行不通。
更新: 更清楚的实际问题是我通过 saveUser 函数保存了用户,它说它保存成功(错误代码 0)但是当我检索它时,它返回 nil,错误代码为“-25300”,我相信根据文档,它代表“找不到项目”
我按照 Yongjoon 做了修改,还是不行,(链接有更新的代码了)
第二次更新 我只是将相同的代码 GeneraFire 放在一个空白项目中,它工作正常。所以我的项目是如何导致问题的。
【问题讨论】:
-
顺便说一句,您不会将函数的参数声明为隐式展开的可选类型。只需使用
String;然后暗示了非可选性。