2016-02-13 60 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)