如何在 Swift 中正确取消设置 UserDefaults 中的数组

How to correctly unset an array from UserDefaults in Swift

我是 swift 的新手,正在学习 UserDefaults。当用户登录到我的应用程序时,我会存储一个密钥来检查他是否 'logged in' 并且每次用户注销时我都会取消设置此密钥。

我将其保存并取消设置为:

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")

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

编辑

这是我退出时调用的完整函数。 objective是删除用户详细信息的数组+还将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?我不确定。在保存任何内容之前我在任何地方包含此代码段并在 运行 之后将其删除 once 在代码中:

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

这似乎可以解决问题!现在信息保存和检索完美