0

我使用字典的键作为datasource我的tableview. 字典的类型是[String: [Question]].

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

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

extension Dictionary where Key: StringLiteralConvertible {
    var sortedKeys: [String] {
        get {
            return keys.sort{ $0.0 > $1.0 }
        }
    }
}

但它告诉我“类型是表达式在没有更多上下文的情况下是模棱两可的”。谁能告诉我这是否可能?

4

1 回答 1

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

  • 此扩展适用于可能不在的Dictionary地方。KeyString

  • keys.sort$0$1是 类型Key, 不是(Key, Value)

于 2016-07-04T22:39:00.737 回答