gpt4 book ai didi

swift - 如何在 Swift 中正确取消 UserDefaults 中的数组

转载 作者:行者123 更新时间:2023-11-30 12:40:14 25 4
gpt4 key购买 nike

我是 swift 新手,正在学习 UserDefaults。当用户登录我的应用程序时,我会存储一个 key 来检查他是否“登录”,并且每次用户注销时都会取消设置该 key 。

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

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

它似乎成功了!信息现在可以完美保存和检索

关于swift - 如何在 Swift 中正确取消 UserDefaults 中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42321342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com