NSUserDefaults中的增量整数

Hen*_*rik 4 integer nsuserdefaults swift

是否有更优雅的方法来增加存储在用户默认值中的计数器?

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setInteger(defaults.integerForKey("counter")+1, forKey: "counter")
Run Code Online (Sandbox Code Playgroud)

Wez*_*Wez 7

不,但如果你做了很多,它可能会做出很好的扩展,就像这样.

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

像这样的用法

NSUserDefaults.incrementIntegerForKey("counter")
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 5

这与 Wezly 提供的解决方案相同,但它重用了我的全局defaults对象并允许我修改值。

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

像这样使用(假设您已经在别处定义了默认值):

defaults.incrementIntegerForKey("counter", by: -3)
Run Code Online (Sandbox Code Playgroud)