Допустим, у меня есть такая структура:
struct TestStruct {
enum Category {
case a
case b
case c
var sortIndex: Int {
switch self {
case .a:
return 1
case .b:
return 0
case .c:
return 2
}
}
}
var category: Category
var name: String
}
Я хочу заказать коллекцию, содержащую их, по sortIndex их категории. Вот что я сделал:
let tableTest: [TestStruct] = [TestStruct(category: .b, name: "hello"),
TestStruct(category: .c, name: "hi"),
TestStruct(category: .a, name: "ok"),
TestStruct(category: .b, name: "bye")]
print(tableTest.sorted(by: { (first, second) -> Bool in
first.category.sortIndex < second.category.sortIndex
}))
привет, пока, хорошо, привет
Это работает, но я хочу знать, есть ли более элегантный и быстрый способ написать это.
Спасибо за вашу помощь.