繁体   English   中英

快速多个userDefaults对象

[英]swift multiple userDefaults objects

我正在使用此结构在我的应用程序中保存令牌:

struct LocalStore {

    static let userDefaults = NSUserDefaults.standardUserDefaults()

    static func saveToken(token: String) {
        userDefaults.setObject(token, forKey: "tokenKey")
    }

    static func getToken() -> String? {
        return userDefaults.stringForKey("tokenKey")
    }

    static func deleteToken() {
        userDefaults.removeObjectForKey("tokenKey")
    }

}

我知道我要覆盖现有的已保存对象,但是我可以保存多个对象吗? 像这样:

static func saveToken(token: String) {
        userDefaults.setObject(token, forKey: "tokenKey")
    }

static func saveFirstName(firstName: String) {
        userDefaults.setObject(firstName, forKey: "lastNameVal")
    }

static func saveLastName(lastName: String) {
        userDefaults.setObject(lastName, forKey: "firstNameVal")
    }

是的,只要它具有不同的密钥即可。 这是可能的,但是,从您的示例中,您将令牌对象保存到多个键。 如果这是您的意图,那没有什么错。

用户默认值是一种持久性存储形式,可以保存多种类型的值(不仅仅是字符串)。

公认的答案是正确的,但我想展示另一种在Swift中如何处理NSUserDefaults的方法。

通过使用计算的属性而不是方法或函数,可以很容易地将NSUserDefaults用作后备变量-并且所有设置和获取操作都是通过此属性执行的,因此无需其他代码即可确保该属性具有正确的值。

从生产代码:

var sorting:DiscoverSortingOrder {
    set {
        NSUserDefaults.standardUserDefaults().setInteger(newValue.rawValue, forKey: "DiscoverSorting")
        refresh() // will trigger reloading the UI
    }
    get {
        if let s = DiscoverSortingOrder(rawValue: NSUserDefaults.standardUserDefaults().integerForKey("DiscoverSorting")){
            return s
        }
        return .New // Default value
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM