使用UserDefaults()自动登录无法正常工作Swift 5

时间:2020-07-07 19:45:37

标签: ios swift

我已经遵循了一些教程,并使用它们的方法为我的应用程序实现自动登录,但是一旦输入凭据后重新启动应用程序,该应用程序将无法登录。

var userDefaults = UserDefaults.standard

在这里我启动用户默认功能

let session = URLSession.shared
session.dataTask(with: request) { (data, response, error) in
    if let safeData = data {
        if let dataString = String(data: safeData, encoding: String.Encoding.utf8) {
            print(dataString)
            if dataString == "Hello" {
                self.userDefaults.setValue(true, forKey: "UserIsLoggedIn")
                DispatchQueue.main.async {
                    self.performSegue(withIdentifier: "loginSegue", sender: self)
                }
            } else {
                DispatchQueue.main.async {
                    self.validationLabel.isHidden = false
                    self.validationLabel.text = " Username or password is incorrect. "
                    self.loginSuccessful = false
                }
            }
                    
                                
        }
    } else {
        print(error ?? "Error with data API URLSession")
    }
}.resume()

此处,在API调用内。如果API的响应为“ hello”,则表示登录成功,我将其值设置为true并带有标识符。

if userDefaults.value(forKey: "UserIsLoggedIn") as? Bool == true {
    performSegue(withIdentifier: "loginSegue", sender: self)
} else {}

在此视图中确实加载了,我使用userDefaults对下一个屏幕执行segue,以便将来启动。.

initiation

viewdidload

API call

2 个答案:

答案 0 :(得分:0)

var userDefaults = UserDefaults()似乎是错误的。请改用let userDefaults = UserDefaults.standard。同样,也不必将其设为类的属性,只需在需要的地方在方法中使用它即可。

答案 1 :(得分:-1)

您是否检查过该值是否已保存在“用户默认值”文件中?如果您在模拟器上运行应用程序,请尝试将文件路径打印到“用户默认值”文件并尝试查找它。它可能无法解决您眼前的问题,但希望可以让您知道问题的根源。

尝试使用AppDelegate.swift中的以下行打印“用户默认设置”文件的位置

    print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String)
相关问题