如何在Swift中删除UserDefaults数据?

3

userdefaults不会删除内存中的数据,尽管我已经将其删除。Keychain会执行删除操作。下面是我分享的代码。它会在退出时调用handlelogout函数进行记录,但当我退出时,它没有删除我保存的数据。

 @objc func deleteee(){
        do {
            try keychain.remove("chipnumbernew")
        } catch let error {
            print("error: \(error)")
        }


    }

    @objc func deleteeetimer(){

        UserDefaults.standard.removeObject(forKey: "timertext")
        UserDefaults.standard.removeObject(forKey: "timertext2")
        UserDefaults.standard.synchronize()

    }
 @objc func handleLogout(){

        do {
            deleteee()
            deleteeetimer()
            try Auth.auth().signOut()



            let mainTableVC = LoginViewController()

            let navController = UINavigationController(rootViewController: mainTableVC)

            self.present(navController, animated: true, completion: {

                //
            })

        } catch let signOutError as NSError {
            print ("Giriş Yapılamadı: %@", signOutError)
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let token = try? keychain.getString("chipnumbernew")
        chip1InfoString = token

        if let strtimer = UserDefaults.standard.string(forKey: "timertext") {
            print("strtimer", strtimer)
          timertextNew.text = strtimer
        }

        if let strtimer2 = UserDefaults.standard.string(forKey: "timertext2") {
            print("strtimer2", strtimer2)
            timertext2New.text = strtimer2

        } }

它仍然在内存中,但它没有工作。 - stakabekor
1个回答

2
UserDefaults 中的 removeObject 方法将会清除该值。您可以在 plist 文件中直接验证此操作。如需了解如何访问 plist,请参考此篇文章
如果您仍想进行清理,可以尝试以下代码。
    if let appDomain = Bundle.main.bundleIdentifier {
        UserDefaults.standard.removePersistentDomain(forName: appDomain)
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接