2016-02-13 57 views
2

是否有更優雅的方式來增加存儲在用戶默認值中的計數器?NSUserDefaults中的遞增整數

let defaults = NSUserDefaults.standardUserDefaults() 
defaults.setInteger(defaults.integerForKey("counter")+1, forKey: "counter") 
+1

不,事實並非如此。但是,也許你可以使用本地計數器並在離開控制器或退出應用程序時寫入用戶默認值。 – vadian

回答

6

不,但如果你這樣做了很多它可能會做一個很好的擴展,像這樣。

extension NSUserDefaults { 
    class func incrementIntegerForKey(key:String) { 
     let defaults = standardUserDefaults() 
     let int = defaults.integerForKey(key) 
     defaults.setInteger(int+1, forKey:key) 
    } 
} 

使用這樣

NSUserDefaults.incrementIntegerForKey("counter") 
+0

我仍然對擴展的可能性印象深刻。我去了這個版本,我將作爲一個單獨的答案發布。 – Henrik

2

這是一樣的Wezly提供的解決方案,但它重用我的全球defaults對象,並讓我修改的值。

extension NSUserDefaults { 
    func incrementIntegerForKey(key:String, by: Int) { 
     let int = integerForKey(key) 
     setInteger(int + by, forKey:key) 
    } 
} 

使用像這樣(假設您在別處定義的默認值):

defaults.incrementIntegerForKey("counter", by: -3)