You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
634 B
27 lines
634 B
//
|
|
// MySortDescriptor.swift
|
|
// PadelClub
|
|
//
|
|
// Created by Razmig Sarkissian on 26/03/2024.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
struct MySortDescriptor<Value> {
|
|
var comparator: (Value, Value) -> ComparisonResult
|
|
}
|
|
|
|
extension MySortDescriptor {
|
|
static func keyPath<T: Comparable>(_ keyPath: KeyPath<Value, T>) -> Self {
|
|
Self { rootA, rootB in
|
|
let valueA = rootA[keyPath: keyPath]
|
|
let valueB = rootB[keyPath: keyPath]
|
|
|
|
guard valueA != valueB else {
|
|
return .orderedSame
|
|
}
|
|
|
|
return valueA < valueB ? .orderedAscending : .orderedDescending
|
|
}
|
|
}
|
|
}
|
|
|