Comment ajouter des éléments dans le dictionnaire dans swift?
J'ai un dictionnaire simple qui est défini comme:
var dict : NSDictionary = [ 1 : "abc", 2 : "cde"]
, Mais plus tard je voudrais ajouter un élément dans ce dictionnaire, qui est 3 : "efg"
, Mais je n'ai aucune idée de comment puis-je effectuer cette action, j'ai beaucoup cherché sur internet mais rien ne m'aide.
Quelqu'un Peut-il me dire comment puis-je ajouter 3 : "efg"
dans ce dictionnaire?
13 réponses
Vous utilisez NSDictionary
. Sauf si vous avez explicitement besoin d'être ce type pour une raison quelconque, je recommande d'utiliser un dictionnaire Swift.
Vous pouvez passer un dictionnaire Swift à n'importe quelle fonction attendant NSDictionary
sans travail supplémentaire, car Dictionary<>
et NSDictionary
se lient de manière transparente les uns aux autres. L'avantage de la méthode SWIFT native est que le dictionnaire utilise des types génériques, donc si vous le définissez avec Int
comme clé et String
comme valeur, vous ne pouvez pas utiliser par erreur des clés et des valeurs de différents types. (Le compilateur vérifie les types en votre nom.)
Sur la base de ce que je vois dans votre code, votre dictionnaire utilise Int
comme clé et String
comme valeur. Pour créer une instance et Ajouter un élément ultérieurement, vous pouvez utiliser ce code:
var dict = [1: "abc", 2: "cde"] // dict is of type Dictionary<Int, String>
dict[3] = "efg"
Si vous devez plus tard l'affecter à une variable de type NSDictionary
, Faites simplement un cast explicite:
let nsDict = dict as! NSDictionary
Et, comme mentionné précédemment, si vous voulez le passer à une fonction attend NSDictionary
, Passez-le TEL QUEL sans conversion ni conversion.
Vous pouvez ajouter de la manière suivante et changer Dictionary
en NSMutableDictionary
dict["key"] = "value"
Je sais que cela pourrait arriver très tard, mais cela peut s'avérer utile à quelqu'un. Donc, pour ajouter des paires de valeurs clés aux dictionnaires dans swift, vous pouvez utiliser updateValue (value: , forKey: ) Méthode comme suit:
var dict = [ 1 : "abc", 2 : "cde"]
dict.updateValue("efg", forKey: 3)
print(dict)
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)
Ainsi, votre dictionnaire contient:
Dictionnaire[1: Hola, 2: Bonjour, 3: Aloha]
Si votre dictionnaire est Int
à String
, vous pouvez le faire simplement:
dict[3] = "efg"
Si vous voulez dire ajouter des éléments à la valeur du dictionnaire une solution possible:
var dict = Dictionary<String, Array<Int>>()
dict["key"]! += [1]
dict["key"]!.append(1)
dict["key"]?.append(1)
Dans Swift, si vous utilisez NSDictionary , Vous pouvez utiliser setValue
:
dict.setValue("value", forKey: "key")
Swift 3+
Exemple pour attribuer de nouvelles valeurs au dictionnaire. Vous devez le déclarer comme NSMutableDictionary:
var myDictionary: NSMutableDictionary = [:]
let newValue = 1
myDictionary["newKey"] = newValue
print(myDictionary)
Étant donné deux dictionnaires comme ci-dessous:
var dic1 = ["a": 1, "c": 2]
var dic2 = ["e": 3, "f": 4]
Voici comment vous pouvez ajouter tous les éléments de dic2 à dic1:
dic2.map {
dic1[$0.0] = $0.1
}
Santé A.
Dict.updateValue
met à jour la valeur de la clé existante à partir du dictionnaire ou ajoute une nouvelle paire clé-valeur si la clé n'existe pas.
Exemple-
var caseStatusParams: [String: AnyObject] = ["userId" : UserDefault.userID ]
caseStatusParams.updateValue("Hello" as AnyObject, forKey: "otherNotes")
Résultat-
▿ : 2 elements
- key : "userId"
- value : 866
▿ : 2 elements
- key : "otherNotes"
- value : "Hello"
var dict = ["name": "Samira", "surname": "Sami"]
// Add a new enter code herekey with a value
dict["email"] = "sample@email.com"
print(dict)
Jusqu'à présent, la meilleure façon que j'ai trouvé pour ajouter des données à un dictionnaire en utilisant l'une des fonctions supérieures de Swift à savoir "réduire". Suivez ci-dessous l'extrait de code:
newDictionary = oldDictionary.reduce(*newDictionary*) { r, e in var r = r; r[e.0] = e.1; return r }
@Dharmesh, Dans votre cas, il sera,
newDictionary = dict.reduce([3 : "efg"]) { r, e in var r = r; r[e.0] = e.1; return r }
Veuillez me faire savoir si vous trouvez des problèmes dans l'utilisation de la syntaxe ci-dessus.
Vous pouvez utiliser une autre classe de testeur pour définir la valeur du dictionnaire comme
variableValue["X"] = 3.14
Au-dessus de variableValue
est un dictionnaire créé par une autre classe. Vous définissez key:value
.
Si vous souhaitez modifier ou mettre à jour NSDictionary alors tout d'abord typecast comme NSMutableDictionary
let newdictionary = NSDictionary as NSMutableDictionary
Ensuite, utilisez simplement
newdictionary.setValue(value: AnyObject?, forKey: String)