- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最后更新
我正在使用 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)。我已经打开了钥匙串(keychain)共享功能并且我有权利。但它就是行不通。
更新:更清楚的实际问题是我通过 saveUser 函数保存了用户并且它说它保存成功(错误代码 0)但是当我检索它时,它返回 nil 并带有我相信的错误代码“-25300”根据文档,它代表“找不到项目”
我按照Yongjoon做了修改,还是不行,(链接现在有更新的代码)
第二次更新我只是将相同的代码 GeneraFire 放在一个空白项目中,它工作正常。那么我的项目是如何导致问题的。
最佳答案
我相信这个问题是由 String 引起的!强行解包。 GeneraFire 中的所有字符串都由 String! 声明。
func getToken()-> String?{
return keychain.get("token")
}
func getEmail()-> String?{
return keychain.get("email")
}
if let status = result["status"] as? String!
>> if let status = result["status"] as? String
Use the conditional form of the type cast operator (as?) when you are not sure if the downcast will succeed. This form of the operator will always return an optional value, and the value will be nil if the downcast was not possible. This enables you to check for a successful downcast.
如果让 status = result["status"] 作为?字符串
由于 result["status"] 返回一个可选值,"as?"表示该值可以为 nil 并转换为“字符串”
如果 casting result "result["status"] as?String"有一个可选值,展开并赋值给 status。
钥匙串(keychain)共享功能与此问题无关。由于钥匙串(keychain)绑定(bind)到设备而不是应用程序,如果您需要在设备中的应用程序之间共享钥匙串(keychain)值,那么您可以启用“钥匙串(keychain)共享功能”
关于ios - 钥匙串(keychain)返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995582/
我是一名优秀的程序员,十分优秀!