如何在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") 

但是,这是不行的,所以我想知道什么是正确的这样做的方式?谢谢!

编辑

这是完整的功能登出当我打电话。其目的是去除的用户的详细信息阵列+还设置UserLoggedInfalse

@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); 
} 
+3

定义“不起作用”。 – rmaddy

+0

什么也没有发生,值不是未设定的。我说,因为当我再次登录时,旧值存在 – Nouman

+0

你在'removeObject'和quit之间调用'synchronize'并退出吗? – Willeke

似乎有一个错误的地方,也许因为我是第一次设置UserDefaults?我不确定。无论我在这个包括之前片段保存我任何东西,运行它曾经在代码后删除它:

if let bundle = Bundle.main.bundleIdentifier { 
    UserDefaults.standard.removePersistentDomain(forName: bundle) 
} 

它似乎做的伎俩!信息现在保存并完美检索