Расширение отсортированных ключей Swift Dictionary
Я использую ключи словаря в качестве datasource
из моего tableview
, Тип словаря [String: [Question]]
,
Проблема в том, что массив возвращается из Dictionary.keys
не отсортированный массив, но я хочу, чтобы он был отсортирован. Создание функции для сортировки массива ключей может быть решением, но для меня этого недостаточно, потому что эту функцию нужно вызывать каждый раз, когда вы получаете доступ к ключам.
Одна моя идея возникла в том, чтобы сделать расширение словаря, что-то вроде этого,
extension Dictionary where Key: StringLiteralConvertible {
var sortedKeys: [String] {
get {
return keys.sort{ $0.0 > $1.0 }
}
}
}
Но это говорит мне, что "Тип это выражение неоднозначно без большего контекста". Кто-нибудь может сказать мне, если это возможно?
1 ответ
extension Dictionary where Key: Comparable {
var sortedKeys: [Key] {
get {
return keys.sort{ $0 > $1 }
}
}
}
Использовать
>
,Key
должно бытьComparable
, (Этот порядок - то, что вы хотите? Вы используете<
по возрастанию.)Это расширение работает для
Dictionary
гдеKey
может не бытьString
,В
keys.sort
,$0
а также$1
имеют типKey
не(Key, Value)
,