2015-12-17 3 views
1

Я пытаюсь сортировать массив, используемый для заполнения TableView.Проблемы с сортировкой массива

Мои данные структурированы следующим образом:

var data = [[Double:String]]() 

Пример: [[1450051409873: "Foo"], [1450051409874: "бар"], [1450051409875: "БАЗ"]]

I хочу, чтобы мои данные должны быть отсортированы по значению удваивается (т.е. 1450051409873 ...)

я делаю следующее, чтобы отсортировать мои данные: data.sortInPlace({$0[0] > $1[0]})

Это не работает.

ответ

3

Это словарь, а не массив. Если вы хотите получить доступ к значениям, отсортированные по клавишам, вы можете создать упорядоченный массив ключей, а затем получить доступ к значениям по одному:

var data: [Double:String] = [1450051409873: "foo", 1450051409874: "bar", 1450051409875: "baz"] 
var sortedKeys = data.keys.sort() 
for key in sortedKeys { 
    print(data[key]!) 
} 
// foo 
// bar 
// baz 

Или вы можете непосредственно вычислить отсортированные значения, обеспечивая закрытие до sort:

var sortedValues = data.sort({ lhs, rhs in 
    lhs.0 < rhs.0 
}).map({ $0.1 }) 
// sortedValues == ["foo", "bar", "baz"] 
+0

Спасибо, что работает! –

Смежные вопросы