我有一组对象,我想订购它。这通常不是一个大问题,但在我的特殊情况下,我希望排序字符串值如下:
CAT-1,CAT-2,.CAT-10
现在CAT-10在CAT-2之前。
在本例中,我已经发现可以使用以下方法对字符串值进行排序:
let items = items.sorted {
(s1, s2) -> Bool in return s1.localizedStandardCompare(s2) == .orderedAscending
}但是,只有当数组只包含字符串值时才能工作。在我的例子中,我想用这样的方法来分类:
self.filteredItems.sort{
return $0.position < $1.position
}但我不知道如何结合上面的函数来解决这个特殊的排序顺序?
发布于 2017-09-24 02:32:47
请核对:
class Category {
let name: String
init(_ name: String) {
self.name = name
}
}
var catA = Category("CAT-2")
var catB = Category("CAT-10")
var catC = Category("CAT-1")
let items: [Category] = [catA, catB, catC]
let filteredItems: [Category] = items.sorted { (s1, s2) -> Bool in
return s1.name.localizedStandardCompare(s2.name) == .orderedAscending
}
print(filteredItems[0].name, filteredItems[1].name, filteredItems[2].name)
// Output : CAT-1 CAT-2 CAT-10
let sortedBy = items.sorted { (c1, c2) -> Bool in
return c1.name < c2.name
}
print(sortedBy[0].name, sortedBy[1].name, sortedBy[2].name)
// Output : CAT-1 CAT-10 CAT-2https://stackoverflow.com/questions/46385733
复制相似问题