如何在Swift中正确地从UserDefaults中取消设置
问题描述:
我是新手,很快学会了解UserDefaults
。当用户登录到我的应用程序中时,我正在存储密钥以检查他是否“登录”,并且每次用户注销时都取消设置此密钥。如何在Swift中正确地从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);
}
答
似乎有一个错误的地方,也许因为我是第一次设置UserDefaults?我不确定。无论我在这个包括之前片段保存我任何东西,运行它曾经在代码后删除它:
if let bundle = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: bundle)
}
它似乎做的伎俩!信息现在保存并完美检索
定义“不起作用”。 – rmaddy
什么也没有发生,值不是未设定的。我说,因为当我再次登录时,旧值存在 – Nouman
你在'removeObject'和quit之间调用'synchronize'并退出吗? – Willeke