userdaeults does not delete the data in memory, although I do delete it. Keychain does the deletion. I share the code below. It calls the handlelogout function when exiting. The recording is fine, but when I exit, it does not delete the data that I have saved.
@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
} }
The removeObject
in UserDefaults
itself will clear the value. You can verify that directly in the plist. Please see this post for accessing plist.
Still, you want to clean up, you can try below code.
if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
}