/ / SWIFT - Intend an Array im NSUser-Standardwörterbuch anhängen - Arrays, schnell, Wörterbuch, Anhängen, nsuserdefaults

SWIFT - Intend an Array in NSUser Default Dictionary anhängen - Arrays, schnell, Wörterbuch, Anhängen, nsuserdefaults

Ich habe ein NSUserDefault Wörterbuch. Einer der Schlüssel hat einen Wert vom Typ [Int]. Ich freue mich darauf, herauszufinden, wie man anhängt Ints zu diesem eingebetteten Array.

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

Was ich gerade mache, ist das Wörterbuch zu speichernzu einer Variablen, erstellen Sie ein Variablenarray aus der neuen Wörterbuchvariablen und fügen Sie dieses an. Dann aktualisiere ich das Wörterbuch mit dem neuen Array und speichere das Wörterbuch auf die Standardwerte zurück.

Kennt jemand da draußen eine direkte Möglichkeit, an das Array anzuhängen, ohne die gesamte mittlere Arbeit erledigen zu müssen?

Antworten:

0 für die Antwort № 1

Du kannst es so machen:

func saveArray(valueArray: [AnyObject], key: String) {
let dataToSave = NSKeyedArchiver.archivedDataWithRootObject(valueArray)
NSUserDefaults.standardUserDefaults().setObject(dataToSave, forKey: key)
}

1 für die Antwort № 2

Sie können eine berechnete Eigenschaft erstellen und definierenGetter / Setter, um es automatisch in Benutzervorgaben zu speichern. Sie müssen von [String: [Int]] in [String: AnyObject] konvertieren, um es in NSUSerDefaults speichern zu können:

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]

0 für die Antwort № 3

Sie können nur Objekte lesen und schreiben NSUserDefaults. Wenn Sie es häufig verwenden, schreiben Sie einige Methoden, z.

func updateDefaultsWithArray(array: [Int]) {
let dictionary = ["keyOne" : array]
let defaults = NSUserDefaults()
defaults.setObject(dictionary, forKey: "defaultDictionary")
}