sorted(by:)
существует во всех последовательностях.Ваш конкретный случай требует Bom, поэтому вам нужно ограничиться этим:
class func sortValues<S: Sequence>(_ values: S) -> [S.Element] where S.Element == Bom {
// .. the rest of your method
}
Вы также можете ограничиться Collection
.
Вы также можете сделать это расширением на Sequence
или Collection
из Bom:
extension Sequence where Element == Bom {
func sorted() -> [Bom] {
return self.sorted {
// .. the rest of your method
}
}
}
Если так всегда нужно упорядочивать Boms, вы можете также рассмотреть возможность сделать их Comparable
, и тогда все обычные методы сортировки будут работать на всех последовательностях:
extension Bom: Comparable {
static func < (lhs: Bom, rhs: Bom) -> Bool {
if lhs.prop1 == rhs.prop1 {
if lhs.prop2 == rhs.prop2 {
if lhs.prop3 == rhs.prop3 {
return lhs.prop4 ?? "" < rhs.prop4 ?? ""
} else {
return lhs.prop3 ?? "" < rhs.prop3 ?? ""
}
} else {
return lhs.prop2 ?? "" < rhs.prop2 ?? ""
}
} else {
return lhs.prop1 < rhs.prop1
}
}
}