如何在 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)
}
这似乎可以解决问题!现在信息保存和检索完美
我是 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)
}
这似乎可以解决问题!现在信息保存和检索完美