Les Dictionnaires sont des listes qui vont un peut ressembler aux Array mais qui vont avoir plusieurs différences:

  • Les Dictionnaires ne sont pas ordonnés. Les valeurs peuvent donc apparaître dans le désordre
  • Ils ne sont pas accessible par un index mais par une ‘key’
  • Ils stockent donc une liste d’éléments contenant une clé (key) et une valeur(value)

Ils ont des points communs:

  • Ils stockent une liste d’éléments
  • Ils doivent avoir le même type
  • La liste des éléments est entre crochets
  • Certaines méthodes sont semblables(isEmpty par exemple)

Sa structure se compose d’une suite entre crochets  de clés et valeurs, séparées par ‘:’ elles mêmes séparées par une virgule.

var dict = [“Key1”: 1, “Key2”: 2, “Key3”: 3]
print(dict)
//[“Key1”: 1, “Key2”: 2, “Key3”: 3] . 
//Les Clés sont des String, les valeurs des Int. vous pouvez utiliser n’importe quel type 

Nous pouvons aussi initialiser un Dictionnaire vide de ces 3 façons:

var dict = [String: Bool]()
 
var dict2 : [Int: String] = [:]
 
var dict3 = Dictionary<String, Int>() 

Nous pouvons aussi compter le nombre d’éléments dans notre Dict, avec le .count

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
print(dict.count)
//7 

Nous pouvons voir si notre dictionnaire est vide avec le .isEmpty

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
print(dict.isEmpty)
//false 

Nous pouvons aussi itérer, c’est à dire passer à travers tous les éléments de notre dictionnaire avec une boucle. Pour en savoir plus sur les boucles, rendez-vous à la section dédiée:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
for (key, value) in dict {
    print(“Je suis (key) et j’ai (value) ans.”)
}
/*
 Je suis Samy et j’ai 42 ans.
 Je suis Sophie et j’ai 27 ans.
 Je suis Max et j’ai 34 ans.
 Je suis Julie et j’ai 19 ans.
 Je suis Joy et j’ai 14 ans.
 Je suis Jean et j’ai 30 ans.
 Je suis Sandra et j’ai 54 ans.
*/ 

Vous pouvez voir que le dictionnaire n’est pas ordonné, nous n’avons pas récupéré les éléments dans le même ordre et que nous devons dans notre boucle récupérer un tuple qui sera notre key et notre value.

Accéder à un élément: 

Cela fonctionne  à peu près comme pour les éléments d’un Array:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
print(dict.first)
print(dict[“Jean”])
print(dict[“Bob”])
/*
 Optional((key: “Samy”, value: 42))
 Optional(30)
 nil
*/ 
  •  vous avez le first: qui est optionnel et renvoie à la fois la clé et la valeur. Etant donné que le dictionnaire n’est pas ordonné, vous aurez un élément au hasard.
  • Vous n’avez pas le last
  • Vous pouvez aller chercher via la key. Vous aurez en résultat la valeur correspondant à la key en optionnel. Cette key peut exister ou pas.

Modifier et ajouter:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
dict[“Jean”] = 79
print(dict)
//[“Max”: 34, “Sophie”: 27, “Samy”: 42, “Joy”: 14, “Jean”: 79, “Sandra”: 54, “Julie”: 19]
dict[“Simon”] = 2
print(dict)
//[“Max”: 34, “Sophie”: 27, “Samy”: 42, “Joy”: 14, “Jean”: 79, “Sandra”: 54, “Julie”: 19, “Simon”: 2] 

Pour modifier une valeur d’un dict, il suffit de récupérer un élément via sa clé et lui attribuer une valeur. Si la clé n’existe pas, un nouvel élément sera créé.

Il existe aussi le updateValue qui aura la même utilité:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
dict.updateValue(35, forKey: “Sophie”)
print(dict)
//[“Max”: 34, “Sandra”: 54, “Sophie”: 35, “Samy”: 42, “Joy”: 14, “Jean”: 30, “Julie”: 19] 

Suppression:

 

Le removeValue: Selon une clé choisie:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
dict.removeValue(forKey: “Jean”)
print(dict)
//[“Max”: 34, “Joy”: 14, “Sandra”: 54, “Samy”: 42, “Julie”: 19, “Sophie”: 27] 

le removeAll() pour tout supprimer:

var dict = [“Jean”: 30, “Julie”: 19, “Sophie”: 27, “Samy”: 42, “Sandra”: 54, “Joy”: 14, “Max”: 34]
dict.removeAll()
print(dict)
//[:]