iOS保持用户在Keychain有时不起作用

时间:2016-06-08 11:29:54

标签: ios swift keychain

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?)我检查用户是否已登录,如下所示:

let user = KeychainManager().getCurrentUser()
if user.isValid() {
    self.redirectToMain()
}
else {
    self.redirectToWelcome()
}

这就是getCurrentUser()方法的样子:

let currentUser = CurrentUser()
currentUser.Id = Int(KeychainWrapper.stringForKey(KeychainKeyConstants.idKeyForKeychain).toNonNullable("0"))
currentUser.email = KeychainWrapper.stringForKey(KeychainKeyConstants.emailKeyForKeychain).toNonNullable("")
// Other properties...
return currentUser

这是我将用户保存到Keyhchain的方式:

let currentUser = CurrentUser()
currentUser.Id = loginModel.Id
currentUser.email = loginModel.email
// Some other properties...
KeychainManager().saveCurrentUser(currentUser)

这就是saveCurrentUser()方法的样子:

KeychainWrapper.setObject(user.Id!, forKey: KeychainKeyConstants.idKeyForKeychain)
KeychainWrapper.setString(user.email, forKey: KeychainKeyConstants.emailKeyForKeychain)
// More properties...

以下是isValid()的{​​{1}}方法:

CurrentUser

这种逻辑主要起作用,但在某些情况下却没有。即使我已经登录,有时令人惊讶地被重定向到登录页面(if self.Id == nil || self.email.isEmpty /* other properties... */ { return false } return true )。一旦我在调试应用程序时遇到了这个问题,问题是有些值没有被提取(我没有机会看到哪些值)。我无法重现错误,我看不出是什么导致了这个问题。

我使用redirectToWelcome()访问Keychain,在这里:KeychainWrapper

有人对此有任何想法吗?什么可能导致这个问题?

0 个答案:

没有答案