首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速多个userDefaults对象

快速多个userDefaults对象
EN

Stack Overflow用户
提问于 2016-04-13 16:33:36
回答 2查看 1.8K关注 0票数 0

我使用这个结构在我的应用程序中保存一个令牌:

代码语言:javascript
复制
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")
    }

}

我知道我会覆盖现有的保存对象,但是我可以保存多个对象吗?如下所示:

代码语言:javascript
复制
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")
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-13 16:39:07

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-04-13 17:57:38

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

通过使用计算的属性而不是方法或函数,可以很容易地使用NSUserDefaults作为支持变量,而且由于所有的set和get操作都是通过该属性执行的,因此不需要进一步的代码来确保该属性具有正确的值。

从生产代码:

代码语言:javascript
复制
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
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36604479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档