【发布时间】:2021-09-23 08:26:13
【问题描述】:
我有以下对象:
private var datasource: [Int: [MyCustomModel]] = [:]
稍后,我需要按key 属性(升序)对datasource 进行排序。
我是这样做的:
let sorted = datasource.sorted(by: {$0.key < $1.key})
虽然我无法将datasource 设置为sorted 属性,但它确实可以完美地按key (Int) 值对内容进行排序。
Xcode 出现以下错误
无法将类型“[Dictionary
.Element]”(又名“Array”)的值分配给类型“[Int: [MyCustomModel]]”
我知道排序后返回的类型是字典而不是数组。 我该如何克服这个问题?
谢谢。
【问题讨论】:
-
"虽然我不能将数据源设置为排序属性" 你应该可以,除非你展示的不是你的真实代码。如果
sorted是[Int : [MyCustomModel]]类型,为什么不改为[(key: Int, value: Array)]?字典只是没有排序,你不能改变它。 -
您只想按键排序并希望结果为 [Int: [MyCustomModel]]。对吗?
-
您的 object 是字典,而不是数组。字典根据定义是无序的。如果你要对字典进行排序,你会得到一个元组数组。
-
@JigneshMayani 没错。按键排序
-
@Sweeper 我会试试你提到的改变,看看它是否有效。