Swift 字典排序键扩展

Swift Dictionary sorted keys extension

我正在使用 词典的 键作为 tableviewdatasource。字典的类型是 [String: [Question]].

问题是从Dictionary.keys返回的数组不是排序的数组,但我希望它是排序的。创建一个函数来对键数组进行排序可能是一个解决方案,但它对我来说不够好,因为每次访问键时都必须调用该函数。

我的一个想法是,扩展 Dictionary,像这样,

extension Dictionary where Key: StringLiteralConvertible {
    var sortedKeys: [String] {
        get {
            return keys.sort{ [=11=].0 > .0 }
        }
    }
}

但它告诉我 "Type is expression is ambiguous without more context"。谁能告诉我这是否可行?

extension Dictionary where Key: Comparable {
    var sortedKeys: [Key] {
        get {
            return keys.sort{ [=10=] >  }
        }
    }
}
  • 要使用>Key需要Comparable。 (这个排序是你想要的?你用<升序。)

  • 此扩展适用于 Dictionary,其中 Key 可能不是 String

  • keys.sort中,[=19=]</code>是<code>Key类型,而不是(Key, Value)