我正在使用以下代码对tableview进行排序:
list.sort() { $0.points > $1.points }
一切正常(一点点) 如果我使用这种排序方法,它将对数字(也称为点)进行一直到10的排序。但是,一旦数字超过10,列表就不再排序。而且我不知道如何解决这个问题。
低于10的结果:
结果高于10:
我猜是因为“ 10”而将其放置在原位,如果我使用“ 60”,它将被放置在第二或第三位置。那么,我该如何解决呢?我会非常感谢。
答案 0 :(得分:7)
这是比较字符串时的正常行为。字符串不是数字。
方法localizedStandardCompare
就像Finder
中那样进行比较,并正确处理数字字符串
list.sort() { $0.points.localizedStandardCompare($1.points) == .orderedDescending }
list.sort() { $0.points.compare($1.points, options: .numeric) == .orderedDescending }