更好的Swift数组排序方法?

时间:2018-07-11 02:19:29

标签: arrays swift sorting

我正在尝试从最大到最小对Swift内部的int数组进行排序。我使用的代码是:

Array(data.keys).sorted(by: { $0 > $1 })

给定的数组是整数1到1,000的数组。结果是:

999, 998, 997 ... 991, 990, 99, 989 ... 802, 801, 800, 80, 8, 799, 798 ...

我想要的结果是:

999, 998, 997 ... 991, 990, 989 ... 802, 801, 800, 799, 798 ...

2 个答案:

答案 0 :(得分:3)

您的字典键是字符串而不是整数。您可以使用数字选项对它们进行比较,以对它们进行排序,如下所示:

let sorted = data.keys.sorted { 
    $0.compare($1, options: .numeric) == .orderedDescending 
}

答案 1 :(得分:-2)

排序基于ASCII字符串值

进行计算

将强制类型转换为整数。...