如何从Swift

时间:2017-02-18 22:20:15

标签: swift nsuserdefaults

我是新手,快速了解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);
}

1 个答案:

答案 0 :(得分:0)

某个地方似乎有一个错误可能是因为我第一次设置了UserDefaults?我不确定。在我保存任何内容之前我已将此代码段包含在内的任何位置,并在代码中一次后将其删除:

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

似乎可以做到这一点!信息现在可以完美保存和检索