Increment integer in NSUserDefaults

谁都会走 提交于 2019-12-21 18:57:50

问题


Is there a more elegant way to increment a counter stored in user defaults?

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

回答1:


No but if you do this a lot it might make a nice extension, something like this.

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

Usage like this

NSUserDefaults.incrementIntegerForKey("counter")



回答2:


This is the same as the solution offered by Wezly, but it reuses my global defaults object and and allows me to modify the value.

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

Used like so (assuming you've defined defaults elsewhere):

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


来源:https://stackoverflow.com/questions/35379691/increment-integer-in-nsuserdefaults

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!