按属性划分Swift命令对象

时间:2017-09-24 01:33:35

标签: swift swift3

我有一个对象数组,我想订购它。这通常不是一个大问题,但在我的特殊情况下,我想订购字符串值,如:

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
}

但我不知道如何结合上述功能来解决这种特殊的排序顺序?

1 个答案:

答案 0 :(得分:1)

请检查:

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-2