我对快速学习UserDefaults
很陌生。当用户登录到我的应用程序时,我会存储一个键来检查他是否“登录”,每次用户注销时我都会取消这个键。
我将其保存下来,并将其取消为:
UserDefaults.standard.set(true, forKey: "isUserLoggedIn");
UserDefaults.standard.set(false, forKey: "isUserLoggedIn");
我还保存了一个包含用户详细信息的数组。我想知道如何在按下注销按钮时取消这个设置?
保存详细信息的代码是:
let array = [storedUsername, storedFirstname, storedSurname, storedUniName, storedUniCourse, storedEmail];
UserDefaults.standard.set(array, forKey: "UserDetailsArray");
UserDefaults.standard.synchronize();
我试图通过以下方式将它们移除:
UserDefaults.standard.removeObject(forKey: "UserDetailsArray")
但是这不起作用,所以我想知道什么是正确的方法来做这件事?谢谢!
编辑
这是我在注销时调用的完整函数。目标是删除用户详细信息+的数组,并将UserLoggedIn
设置为false
。
@IBAction func LogoutButtonTapped(_ sender: Any) {
UserDefaults.standard.set(false, forKey: "isUserLoggedIn");
UserDefaults.standard.removeObject(forKey: "UserDetailsArray")
UserDefaults.standard.synchronize();
self.performSegue(withIdentifier: "LoginViewController", sender: self);
}
发布于 2017-02-22 14:01:21
也许是因为我第一次设置UserDefaults,所以在某个地方出现了一个bug?我没有把握。在保存任何内容并在代码中运行之后删除它之前,我在任何地方都包含了这个片段:
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
它似乎起作用了!该信息现在保存并完美地检索。
https://stackoverflow.com/questions/42321342
复制相似问题