#swift #xcode #sorting #swiftui #widgetkit
Вопрос:
Я разрабатываю widget
для mac os
, я использую intents
, чтобы позволить пользователю выбирать, следует ли сортировать для asc
или desc
и тип данных name
или star
.
Я получаю следующую ошибку, проблема в том, что я не понимаю, какие данные мне нужно вернуть, чтобы иметь возможность использовать их внутри sortCustomers
.
Не могли бы вы мне помочь?
struct Repository: Identifiable, Codable, Hashable {
var id: UUID { return UUID() }
let name: String
let stargazers_count: Int
enum CodingKeys: String, CodingKey {
case name, stargazers_count
}
}
func sortCustomers<T: Comparable>(customers: [Repository], with itemPath: KeyPath<Repository, T>, asc: Bool) -> [Repository] {
return customers.sorted() {
if(asc){ return $0[keyPath: itemPath] < $1[keyPath: itemPath]
}else{ return $0[keyPath: itemPath] > $1[keyPath: itemPath] }
}
}
enum SortBy : Int {
case name = 1
case star
}
extension SortBy {
var sortValue {
switch self {
case .name:
return Repository.name
case .star:
return Repository.stargazers_count
}
}
}
func getTimeline(for configuration: WidgetConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
let orderBy = SortBy(rawValue: configuration.OrderBy.rawValue)!
print("isAsc", orderBy)
let r = sortCustomers(customers: repositories, with: Repository.stargazers_count, asc: isAsc)
}