我有以下对象:
private var datasource: [Int: [MyCustomModel]] = [:]
在稍后阶段,我需要按 datasource
属性(升序)对 key
进行排序。
我是这样做的:
let sorted = datasource.sorted(by: {$0.key < $1.key})
这确实按 key
(Int) 值对内容进行了完美排序,但我无法将 datasource
设置为 sorted
属性。
Xcode 出现以下错误
<块引用>无法将类型“[Dictionary
我得到排序后返回的类型是字典而不是数组。 我该如何克服这个问题?
谢谢。
答案 0 :(得分:1)
let datasource: [Int: [MyCustomModel]] = [:]
字典无法排序!。如果您使用 sorted(by: { $0.key < $1.key})
对 datasource
进行排序,结果是一个数组,而不是一个字典。
datasource.sorted(by: { $0.key < $1.key})
您可以使用 OrderedDictionary
。它保持插入顺序。
答案 1 :(得分:1)
我没有得到任何解决方案来对字典进行排序,但您可以执行以下操作。
它对我有用。
制作键值结构。
struct STRUCT_TEMP
{
var key : Int
var value : [MyCustomModel]
}
创建结构变量。
var structTemp : [STRUCT_TEMP] = []
将字典转换成如下结构:
self.structTemp = datasource.map({ STRUCT_TEMP(key: $0.key, value: $0.value) })
现在您可以对 structTemp 数组做任何事情。就像排序、过滤一样,你也可以在任何你想要的地方使用这个数组而不是字典。