2017-12-18 302 views
-1

是否可以刷新Swift4中的用户默认值?扫描新产品后,这些值会更改,并且它们存储在用户默认值中。所以当你扫描一个新产品时,用户默认必须刷新。在Swift 4中刷新userdefaults

我希望有人对我来说

+1

是的,如果您为将要覆盖的密钥重新分配一个值,那么您可以覆盖UserDefaults – Scriptable

+0

中的值。 UserDefaults.standard.set(value,forKey:key) – adarshaU

+0

@Scriptable我该怎么做?当我扫描产品时,我需要这样做。然后,值必须更改 – bartvdb

回答

0

设置userdefaults为您设置第一次用相同的密钥的解决方案。

UserDefaults.standard.set(value, forKey: key) 
0

试试这个。之前设置删除和同步it.this可能会解决您的问题

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

} 
0

作为一种变通方法来实现它,你可以声明一个计算属性获取/设置从用户的默认值,例如:

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

读取flag的值会从用户默认值(“flag_key”键)返回布尔值,编辑其值也会反映到用户默认值中。