SWIFT - 将 Int 附加到 NSUser 默认字典中的数组
SWIFT - Append Int to array in NSUser Default Dictionary
我有一本 NSUserDefault
字典。其中一个键的值类型为 [Int]
。我想弄清楚如何将 Ints
附加到该嵌入式数组。
var dictionary = ["keyOne" : [1,2,3,4,5]]
defaults.setObject(dictionary, forKey: "defaultDictionary")
我目前正在做的是将字典保存到一个变量,从新的字典变量创建一个变量数组,然后附加它。然后我用新数组更新字典并将该字典保存回默认值。
有没有人知道无需完成所有中间工作即可直接附加到数组的方法?
您只能从 NSUserDefaults
读取和写入对象。如果你经常使用它,写一些方法例如:
func updateDefaultsWithArray(array: [Int]) {
let dictionary = ["keyOne" : array]
let defaults = NSUserDefaults()
defaults.setObject(dictionary, forKey: "defaultDictionary")
}
你可以这样做:
func saveArray(valueArray: [AnyObject], key: String) {
let dataToSave = NSKeyedArchiver.archivedDataWithRootObject(valueArray)
NSUserDefaults.standardUserDefaults().setObject(dataToSave, forKey: key)
}
您可以创建计算 属性 并定义 getter/setter 以将其自动保存为用户默认值。您需要从 [String:[Int]] 转换为 [String:AnyObject] 才能将其保存到 NSUSerDefaults:
var defaultDictionary:[String:[Int]] {
get {
return NSUserDefaults().dictionaryForKey("defaultDictionary") as? [String:[Int]] ?? [:]
}
set {
NSUserDefaults().setObject(newValue as [String:AnyObject], forKey: "defaultDictionary")
}
}
print(defaultDictionary["keyOne"]?.description ?? "") // [1, 2, 3, 4, 5]
print(defaultDictionary["keyTwo"]?.description ?? "") // [1, 2, 3]
defaultDictionary["keyOne"]?.append(6)
defaultDictionary["keyTwo"]?.append(4)
print(defaultDictionary["keyOne"]?.description ?? "") // [1, 2, 3, 4, 5, 6]
print(defaultDictionary["keyTwo"]?.description ?? "") // [1, 2, 3, 4]
我有一本 NSUserDefault
字典。其中一个键的值类型为 [Int]
。我想弄清楚如何将 Ints
附加到该嵌入式数组。
var dictionary = ["keyOne" : [1,2,3,4,5]]
defaults.setObject(dictionary, forKey: "defaultDictionary")
我目前正在做的是将字典保存到一个变量,从新的字典变量创建一个变量数组,然后附加它。然后我用新数组更新字典并将该字典保存回默认值。
有没有人知道无需完成所有中间工作即可直接附加到数组的方法?
您只能从 NSUserDefaults
读取和写入对象。如果你经常使用它,写一些方法例如:
func updateDefaultsWithArray(array: [Int]) {
let dictionary = ["keyOne" : array]
let defaults = NSUserDefaults()
defaults.setObject(dictionary, forKey: "defaultDictionary")
}
你可以这样做:
func saveArray(valueArray: [AnyObject], key: String) {
let dataToSave = NSKeyedArchiver.archivedDataWithRootObject(valueArray)
NSUserDefaults.standardUserDefaults().setObject(dataToSave, forKey: key)
}
您可以创建计算 属性 并定义 getter/setter 以将其自动保存为用户默认值。您需要从 [String:[Int]] 转换为 [String:AnyObject] 才能将其保存到 NSUSerDefaults:
var defaultDictionary:[String:[Int]] {
get {
return NSUserDefaults().dictionaryForKey("defaultDictionary") as? [String:[Int]] ?? [:]
}
set {
NSUserDefaults().setObject(newValue as [String:AnyObject], forKey: "defaultDictionary")
}
}
print(defaultDictionary["keyOne"]?.description ?? "") // [1, 2, 3, 4, 5]
print(defaultDictionary["keyTwo"]?.description ?? "") // [1, 2, 3]
defaultDictionary["keyOne"]?.append(6)
defaultDictionary["keyTwo"]?.append(4)
print(defaultDictionary["keyOne"]?.description ?? "") // [1, 2, 3, 4, 5, 6]
print(defaultDictionary["keyTwo"]?.description ?? "") // [1, 2, 3, 4]