Swift ui mac os сортировка по свойствам, выбранным намерением

#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)
}