2016-11-22 3 views
0

у меня есть список URL и его соответствующих любимых подсчетов, полученный из firebase базы данных добавленной в массив словарей, как например:Swift, как сортировать словарь массива по ключевым значениям

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

Я понимаю, что мы можем сортировать массив словарей с помощью .sort, но который удаляет словари с аналогичными ключами, как в этом случае.

как сортировать это такое, что я получаю массив URL, заказанный их ключи к этому:

urlArray = [URL2, URL1, URL3] 

поскольку URL2 имеет более высокий ключ, тогда как url1 и URL3 имеют аналогичных ключи

+0

Возможного дубликат [Сортировка словаря по ключам] (http://stackoverflow.com/questions/25377177/sort-dictionary-by-keys) –

+0

Нет, нет, что не объясняет, что происходит, когда есть дубликат ключи. Ive попробовал это решение, но в основном просто удалил дубликаты. – Wilson

+0

Сортировка коллекции будет * никогда * удалять записи. Можете ли вы показать, что именно вы пробовали? –

ответ

2

Вы функции могут использовать более высокие порядка сортировки и flatMap вложенной вместе, как так:

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

Примечание: берегитесь принудительного развернутых опций она работает здесь, но может привести к исключению

+0

Спасибо, эта работа отлично! – Wilson

-1

Вы можете отсортировать, используя дескрипторы сортировки, доступные ниже.

var descriptor: NSSortDescriptor = NSSortDescriptor(key: "name", ascending: true) 
var sortedResults: NSArray = results.sortedArrayUsingDescriptors([descriptor]) 
Смежные вопросы