[英]Save selected items in array of objects to UserDefaults in swift 4
[英]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.