2016-06-30 11 views
-1

Ich versuche, Werte des Wörterbuchs in serieller Reihenfolge zu drucken, z. B. Eins Zwei Drei, aber unter Verwendung von Code zeigt Zufallswert aus dem Wörterbuch an. Wie kann ich es korrigieren? Vielen Dank !!Drucken Werte des Wörterbuchs mit Schleife

var someDict:[Int:String] = [1:"One", 2:"Two", 3:"Three"] 
for keys in someDict.keys 
{ 
//print (keys) 
    print(someDict[keys]!) 
} 

Ausgang:

Two 
Three 
One 

Und wenn ich drucken Tasten. es zeigt 2 3 1 :(

+2

Wörterbücher sind ungeordnet.Wenn Sie eine bestimmte Reihenfolge möchten, dann müssen Sie die Schlüssel in ein Array zu extrahieren, sortieren Sie das Array und dann durchlaufen über das sortierte Array auf jedes Wörterbuchelement zugreifen – Paulw11

+0

okay !! kannst du mir ein beispiel zeigen. Ich bin neu in swift. –

+0

Besser noch, wenn Ihre Schlüssel Ganzzahlen sind, und Sie möchten die Sammlung in einer bestimmten Reihenfolge, verwenden Sie ein Array, kein Wörterbuch. Wörterbücher sind inhärent ungeordnet und Arrays sind inhärent geordnet. –

Antwort

1

Die Schlüssel des Wörterbuchs keine Ordnung ist. So können Sie andere Array verwenden Schlüssel zu speichern, um zu gewährleisten.

Oder ..

for key in someDict.keys.sort ({ 
    $0 < $1 
}) { 
    print(someDict[key]) 
} 

Chose Höhe Performance-Weg nach Ihrer Anforderung.

+0

'someDict.keys.sort()' funktioniert auch, da Int-Werte dem 'Comparable'-Protokoll entsprechen. –

+0

yeah, wenn brauchen weniger als Sequenz. – maquannene

+0

Danke maquannene und Duncan C, es funktioniert perfekt !! –

Verwandte Themen