Swift 字典排序键扩展
Swift Dictionary sorted keys extension
我正在使用 词典的 键作为 tableview
的 datasource
。字典的类型是 [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)
。
我正在使用 词典的 键作为 tableview
的 datasource
。字典的类型是 [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)
。