SWIFT - 将Int附加到NSUser默认字典

时间:2015-11-20 18:57:20

标签: arrays swift dictionary append nsuserdefaults

我有一个NSUserDefault字典。其中一个键的值为[Int]。我想找出如何将Ints附加到嵌入式数组中。

var dictionary = ["keyOne" : [1,2,3,4,5]]
defaults.setObject(dictionary, forKey: "defaultDictionary")

我目前正在做的是将字典保存到变量,从新字典变量创建变量数组,然后附加它。然后我用新数组更新字典并将该字典保存回默认值。

有没有人知道直接的方法来附加到阵列而不必做所有的中间工作?

3 个答案:

答案 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)
}