2016-11-22 2 views
0

ich eine Liste der URL haben und ihre jeweiligen Favoriten aus Feuerbasis Datenbank in eine Reihe von Wörterbüchern beigefügten erhalten zählt als solche:Swift, wie durch Schlüsselwerte Array Wörterbuch sortieren

dictionaryArray = [[1: URL1], [2: URL2], [1: URL3]] 

Ich verstehe, dass wir die sortieren Reihe von Wörterbüchern mit .sort, aber das entfernt Wörterbücher mit ähnlichen Schlüsseln wie in diesem Fall.

, wie ich es sortiere, so dass ich ein Array der URL durch ihre Schlüssel dazu bestellt erhalten:

urlArray = [URL2, URL1, URL3] 

seit URL2 den höheren Schlüssel während URL1 und URL3 haben ähnliche Tasten

+0

Mögliches Duplikat von [Sortieren Wörterbuch von Tasten] (http://stackoverflow.com/questions/25377177/sort-dictionary-by-keys) –

+0

Nein, nein, das, was erklärt nicht passiert, wenn es doppelte ist Schlüssel. Ich habe versucht, diese Lösung, aber es im Grunde nur entfernt die Duplikate – Wilson

+0

Sortierung einer Sammlung wird * nie * Einträge entfernen. Kannst du zeigen, was du genau versucht hast? –

Antwort

2

Sie nutzen könnten Funktionen höherer Ordnung sortiert und flatMap verschachtelt zusammen etwa so:

let sortedURLs = dictionaryArray 
        .sorted(by: { $0.keys.first! > $1.keys.first! }) 
        .flatMap({ $0.values.first! }) 

Hinweis: aus der Zwangs ungeöffneten optionals sehen es hier funktioniert, aber zu einer Ausnahme führen könnte

+0

Danke, das funktioniert perfekt! – Wilson

-1

Sie können mithilfe der folgenden Sortierdeskriptoren sortieren.

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) 
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor]) 
Verwandte Themen