2017-12-18 289 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」鍵)返回布爾值,編輯其值也會反映到用戶默認值中。