NSUserDefaults中的增量整数

时间:2016-02-13 12:14:23

标签: swift integer nsuserdefaults

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

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

3 个答案:

答案 0 :(得分: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")

答案 1 :(得分: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)

答案 2 :(得分:1)

extension UserDefaults {
    class func incrementIntegerForKey(key: String) -> Int {
        let defaults = UserDefaults()
        let int = defaults.integer(forKey: key)
        defaults.setValue(int + 1, forKey: key)
        return int + 1
    }
}

Swift 5.1 也带有当前增量的返回值