我已经遵循了一些教程,并使用它们的方法为我的应用程序实现自动登录,但是一旦输入凭据后重新启动应用程序,该应用程序将无法登录。
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,以便将来启动。.
答案 0 :(得分:0)
var userDefaults = UserDefaults()
似乎是错误的。请改用let userDefaults = UserDefaults.standard
。同样,也不必将其设为类的属性,只需在需要的地方在方法中使用它即可。
答案 1 :(得分:-1)
您是否检查过该值是否已保存在“用户默认值”文件中?如果您在模拟器上运行应用程序,请尝试将文件路径打印到“用户默认值”文件并尝试查找它。它可能无法解决您眼前的问题,但希望可以让您知道问题的根源。
尝试使用AppDelegate.swift中的以下行打印“用户默认设置”文件的位置
print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String)