it-swarm.com.de

Swift: Wörterbuchzugriff über Index

Ich möchte Werte aus einem Wörterbuch in meinen UITableViewCells verwenden. Kann ich diese aus einem Wörterbuch erhalten, indem Sie indexPath.row als Wert und indexPath.section als Schlüssel verwenden?

14
Vincent

sie können das Schlüssel-Array und den Schlüssel bei indexPath.section wie folgt erhalten:

Array(yourDictionary.keys)[indexPath.section]

und Sie können den Wert bei indexPath.row aus dem Werte-Array wie folgt erhalten:

Array(yourDictionary.values)[indexPath.row]

Bearbeiten:

wenn Sie die Werte eines bestimmten Abschnittsschlüssels erhalten möchten, sollten Sie Folgendes schreiben:

let key = Array(yourDictionary.keys)[indexPath.section]
let array = yourDictionary[key]
let value = array[indexPath.row]
48
Firas

Wörterbücher sind von Natur aus ungeordnet. Wenn Sie "dictionary.keys" verwenden, können Sie ein Array von Schlüsseln abrufen und dieses verwenden, wie @Firas in seiner Antwort sagt. Es gibt jedoch keine Garantie, dass Sie beim nächsten Aufruf eines Arrays von Schlüsseln dieselbe Reihenfolge haben.

Eine andere Option wäre, Int als Schlüsseltyp und dann die indexPath.row als Schlüssel zu verwenden.

Es ist wirklich besser, ein Array als Datenquelle für eine Tabellenansicht zu verwenden.

Wenn Sie die Werte für eine tabellarische Schnittansicht in einem Wörterbuch speichern möchten, sollten Sie ein äußeres Abschnittsarray verwenden, das ein inneres Zeilenarray enthält, das ein Wörterbuch mit Werten für die Zelle enthält.

7
Duncan C

Hier ist mein kleiner Trick, um per Index auf Dictionary zuzugreifen. Wörterbuch einfach umwickeln!

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]]
0
Changnam Hong