Расширение отсортированных ключей 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),

Другие вопросы по тегам