Je souhaite utiliser les valeurs d'un dictionnaire dans mes UITableViewCells. Puis-je obtenir ceux d'un dictionnaire en utilisant indexPath.row pour la valeur et indexPath.section pour la clé?
vous pouvez obtenir le tableau de clés et obtenir la clé à indexPath.section
comme ceci:
Array(yourDictionary.keys)[indexPath.section]
et vous pouvez obtenir la valeur à indexPath.row
à partir du tableau de valeurs comme ceci:
Array(yourDictionary.values)[indexPath.row]
Modifier:
si vous voulez obtenir les valeurs d'une clé de section spécifique, vous devez écrire:
let key = Array(yourDictionary.keys)[indexPath.section]
let array = yourDictionary[key]
let value = array[indexPath.row]
Les dictionnaires sont par nature non ordonnés. Si vous utilisez dictionary.keys, vous pouvez obtenir un tableau de clés et l'utiliser, comme @Firas le dit dans sa réponse, mais rien ne garantit que la prochaine fois que vous récupérerez un tableau de clés, elles seront dans le même ordre.
Une autre option consisterait à utiliser Int comme type de clé, puis à utiliser indexPath.row comme clé.
Il est vraiment préférable d'utiliser un tableau en tant que source de données pour une vue sous forme de tableau.
Si vous souhaitez stocker les valeurs d'une vue tabulaire divisée dans un dictionnaire, vous devez utiliser un tableau de section externe, qui contient un tableau de lignes interne, qui contient un dictionnaire de valeurs pour la cellule.
Voici mon petit truc pour accéder à Dictionnaire par index. Juste emballer le dictionnaire!
var dict = [String: [Int]]()
dict.updateValue([1, 2, 3], forKey: "firstKey")
dict.updateValue([3, 4, 5], forKey: "secondKey")
var keyIndex = ["firstKey": "firstKey", "secondKey": "secondKey"]
var arr = [[String: [Int]]]()
for (key, value) in dict {
arr.append([keyIndex[key]!: value])
}
print(arr[0]) // ["firstKey": [1, 2, 3]]