我正在开发一个Swift应用程序,允许用户在iOS钥匙串中存储用户信息(密码,authToken等)。我正在使用Matthew Palmers Locksmith库。我能够保存,删除并有时检索信息。
当用户首次登录应用时,我验证并将其电子邮件存储在应用默认值中,并将密码链中的authToken和密码存储。然后我用:
let email = appDelegate.defaults.valueForKey("email")!
let dictionary = Locksmith.loadDataForUserAccount("\(email)")
获取详细信息并使用此信息执行API请求。 90%的时间按预期工作,但通常是在应用程序处于非活动状态一段时间后(我不知道是什么原因导致它发生变化)我无法再访问字典项目。
每次我需要进行API调用时,我都会调用上面的代码,而且我知道我无法加载数据,因为我正在做:
if let dictionary = dictionary {
// DO SOMETHING HERE
}else{
print("Can't get the data")
}
每次我需要拨打网络电话(通过Alamofire)时,都会调用Locksmith.loadDataForUserAccount吗?任何人都知道为什么我有时无法访问钥匙串?
SO上的一些帖子说它是因为Swift编译器级别,但已经设置为-Onone
在iPhone6 9 +上运行的设备和模拟器上都会发生这种情况