Reputation: 21
Is it possible to refresh the value of the user defaults in Swift4? The values change after scanning a new product and they are stored in a user default. So when u scan a new product the user default has to refresh.
I hope someone has a solution for me
Upvotes: 1
Views: 5793
Reputation: 31645
As a workaround to achieve it, you could declare a computed property for getting/setting the value from the user defaults, example:
var flag: Bool {
get {
let value = UserDefaults.standard.bool(forKey: "flag_key")
return value
}
set {
UserDefaults.standard.set(newValue, forKey: "flag_key")
UserDefaults.standard.synchronize()
}
}
reading the value of flag
returns the Boolean value from the user defaults (of "flag_key" key) and editing its value would be also reflected to the user defaults.
Upvotes: 2
Reputation: 960
Try this one. before setting remove and synchronise it.this might solve your issue
func setValueToDefaults(key:String, value:AnyObject){
self.removeKeyValueFromDefaults(Key:key)
UserDefaults.standard.set(value, forKey: key)
}
func getValueFromDefaults(key:String) ->AnyObject?{
if((UserDefaults.standard.value(forKey: key)) != nil){
let value:AnyObject = UserDefaults.standard.value(forKey: key)! as AnyObject
return value
}else{
return nil
}
}
func removeKeyValueFromDefaults(Key:String){
let defaults = UserDefaults.standard
defaults.removeObject(forKey: Key)
defaults.synchronize()
}
Upvotes: 2
Reputation: 924
Set userdefaults as you are setting first time with same key.
UserDefaults.standard.set(value, forKey: key)
Upvotes: 2