0

私は辞書のキーdatasourceを私のtableview. ディクショナリのタイプは[String: [Question]]です。

問題は、返された配列Dictionary.keysがソートされた配列ではないことですが、ソートしたいです。キー配列をソートする関数を作成することは解決策になる可能性がありますが、キーにアクセスするたびにその関数を呼び出す必要があるため、私にとっては十分ではありません。

私のアイデアの 1 つは、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 に答える