/ / SWIFT - Anexar Int ao array no Dicionário Padrão NSUser - arrays, swift, dictionary, append, nsuserdefaults

SWIFT - Anexa Int a matriz no Dicionário padrão do NSUser - arrays, swift, dictionary, append, nsuserdefaults

eu tenho um NSUserDefault dicionário. Uma das chaves tem um valor de tipo [Int]. Estou tentando descobrir como acrescentar Ints a essa matriz incorporada.

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

O que estou fazendo atualmente é salvar o dicionárioa uma variável, criando uma matriz de variáveis ​​a partir da nova variável de dicionário e, em seguida, anexando-a. Então, estou atualizando o dicionário com a nova matriz e salvando esse dicionário de volta aos padrões.

Alguém aí conhece uma maneira direta de acrescentar à matriz sem ter que fazer todo o trabalho do meio?

Respostas:

0 para resposta № 1

Você pode fazer assim:

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

1 para resposta № 2

Você pode criar uma propriedade computada e definirgetter / setter para salvá-lo automaticamente nos padrões do usuário. Você precisará transmitir de [String: [Int]] para [String: AnyObject] para poder salvá-lo em 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]

0 para resposta № 3

Você só pode ler e escrever objetos de NSUserDefaults. Se você usá-lo com frequência, escreva alguns métodos, por exemplo:

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