swift - pelicula - fahrenheit 451 ray bradbury
¿Cómo agregar elementos a un diccionario en Swift? (16)
Tengo un diccionario simple que se define como:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
Ahora quiero agregar un elemento en este diccionario:
3 : "efg"
¿Cómo puedo agregar
3 : "efg"
en este diccionario existente?
A partir de Swift 5, funciona la siguiente colección de códigos.
// main dict to start with
var myDict : Dictionary = [ 1 : "abc", 2 : "cde"]
// dict(s) to be added to main dict
let myDictToMergeWith : Dictionary = [ 5 : "l m n"]
let myDictUpdated : Dictionary = [ 5 : "lmn"]
let myDictToBeMapped : Dictionary = [ 6 : "opq"]
myDict[3]="fgh"
myDict.updateValue("ijk", forKey: 4)
myDict.merge(myDictToMergeWith){(current, _) in current}
print(myDict)
myDict.merge(myDictUpdated){(_, new) in new}
print(myDict)
myDictToBeMapped.map {
myDict[$0.0] = $0.1
}
print(myDict)
Dados dos diccionarios como a continuación:
var dic1 = ["a": 1, "c": 2]
var dic2 = ["e": 3, "f": 4]
Así es como puede agregar todos los elementos de dic2 a dic1 :
dic2.map {
dic1[$0.0] = $0.1
}
Saludos A.
En Swift, si está usando
NSDictionary
, puede usar
setValue
:
dict.setValue("value", forKey: "key")
Estás usando
NSDictionary
.
A menos que explícitamente necesite que sea de ese tipo por alguna razón, le recomiendo usar un diccionario Swift.
Puede pasar un diccionario Swift a cualquier función que espere
NSDictionary
sin ningún trabajo adicional, porque
Dictionary<>
y
NSDictionary
se
NSDictionary
perfectamente entre sí.
La ventaja de la forma nativa de Swift es que el diccionario usa tipos genéricos, por lo que si lo define con
Int
como la clave y
String
como el valor, no puede usar claves y valores por error.
(El compilador verifica los tipos en su nombre).
Según lo que veo en su código, su diccionario usa
Int
como clave y
String
como valor.
Para crear una instancia y agregar un elemento más adelante, puede usar este código:
var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String>
dict[3] = "efg"
Si luego necesita asignarlo a una variable de tipo
NSDictionary
, simplemente realice una conversión explícita:
let nsDict = dict as! NSDictionary
Y, como se mencionó anteriormente, si desea pasarlo a una función que espera
NSDictionary
, páselo como está sin ningún tipo de conversión o conversión.
Hasta ahora, la mejor manera que he encontrado para agregar datos a un diccionario mediante el uso de una de las funciones de orden superior de Swift, es decir, "reducir". Siga el fragmento de código a continuación:
newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }
@ Dharmesh En su caso, será,
newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }
Avíseme si encuentra algún problema al usar la sintaxis anterior.
No hay función para agregar los datos en el diccionario. Simplemente asigna el valor a la nueva clave en el diccionario existente. automáticamente agregará valor al diccionario.
var param = ["Name":"Aloha","user" : "Aloha 2"]
param["questions"] = "Are you mine?"
print(param)
La salida será como
["Nombre": "Aloha", "usuario": "Aloha 2", "preguntas": "" ¿Eres mío "?"]
Para agregar nuevos elementos simplemente configure:
listParrameters["your parrameter"] = value
Para los becarios que usan
[String:Any]
lugar de
Dictionary
continuación, se encuentra la extensión
extension Dictionary where Key == String, Value == Any {
mutating func append(anotherDict:[String:Any]) {
for (key, value) in anotherDict {
self.updateValue(value, forKey: key)
}
}
}
Feliz anexión!
Sé que esto podría llegar muy tarde, pero puede resultar útil para alguien. Entonces, para agregar pares de valores clave a los diccionarios en swift, puede usar el método updateValue (value:, forKey:) de la siguiente manera:
var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)
Si su diccionario es
Int
a
String
, puede hacer simplemente:
dict[3] = "efg"
Si quiere decir agregar elementos al valor del diccionario, una posible solución:
var dict = Dictionary<String, Array<Int>>()
dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)
puede agregar de la siguiente manera y cambiar
Dictionary
a
NSMutableDictionary
dict["key"] = "value"
si desea modificar o actualizar NSDictionary, primero escriba todo como NSMutableDictionary
let newdictionary = NSDictionary as NSMutableDictionary
entonces simplemente use
newdictionary.setValue(value: AnyObject?, forKey: String)
Dict.updateValue
actualiza el valor de la clave existente del diccionario o agrega un nuevo par clave-valor nuevo si la clave no existe.
Ejemplo-
var caseStatusParams: [String: AnyObject] = ["userId" : UserDefault.userID ]
caseStatusParams.updateValue("Hello" as AnyObject, forKey: "otherNotes")
Resultado-
▿ : 2 elements
- key : "userId"
- value : 866
▿ : 2 elements
- key : "otherNotes"
- value : "Hello"
SWIFT 3 - XCODE 8.1
var dictionary = [Int:String]()
dictionary.updateValue(value: "Hola", forKey: 1)
dictionary.updateValue(value: "Hello", forKey: 2)
dictionary.updateValue(value: "Aloha", forKey: 3)
Entonces, tu diccionario contiene:
diccionario [1: Hola, 2: Hola, 3: Aloha]
Swift 3+
Ejemplo para asignar nuevos valores al Diccionario. Debe declararlo como NSMutableDictionary:
var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "[email protected]"
print(dict)