簡體   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