我有一个NSUserDefault
字典。其中一个键的值为[Int]
。我想找出如何将Ints
附加到嵌入式数组中。
var dictionary = ["keyOne" : [1,2,3,4,5]]
defaults.setObject(dictionary, forKey: "defaultDictionary")
我目前正在做的是将字典保存到变量,从新字典变量创建变量数组,然后附加它。然后我用新数组更新字典并将该字典保存回默认值。
有没有人知道直接的方法来附加到阵列而不必做所有的中间工作?
答案 0 :(得分:1)
您可以创建计算属性并定义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]
答案 1 :(得分:0)
您只能从NSUserDefaults
读取和写入对象。如果您经常使用它,请写一些方法,例如:
func updateDefaultsWithArray(array: [Int]) {
let dictionary = ["keyOne" : array]
let defaults = NSUserDefaults()
defaults.setObject(dictionary, forKey: "defaultDictionary")
}
答案 2 :(得分:0)
你可以这样做:
func saveArray(valueArray: [AnyObject], key: String) {
let dataToSave = NSKeyedArchiver.archivedDataWithRootObject(valueArray)
NSUserDefaults.standardUserDefaults().setObject(dataToSave, forKey: key)
}