我的目标如下:
private var datasource: [Int: [MyCustomModel]] = [:]
在稍后阶段,我需要根据datasource
属性(升序)对key
进行排序。
我这样做如下:
let sorted = datasource.sorted(by: {$0.key < $1.key})
这可以很好地按照key
(Int)值对内容进行排序,尽管我不能将datasource
设置为sorted
属性。
Xcode显示以下错误
不能将类型'[Dictionary.Element]‘(又称'Array<(key: Int,value: Array)>')的值赋给'[Int : MyCustomModel]’类型。
我得到返回的类型,排序后是字典,而不是数组。我怎样才能克服这个问题?
谢谢。
发布于 2021-07-14 04:21:21
我没有找到同样的解决方案来对字典进行排序,但是您可以这样做。
它对我有用。
制作钥匙和价值的结构。
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数组执行任何操作。和排序一样,过滤器也可以在任何地方使用这个数组,而不是字典。
发布于 2021-07-14 03:19:55
let datasource: [Int: [MyCustomModel]] = [:]
字典无法排序!。如果使用sorted(by: { $0.key < $1.key})
对datasource
进行排序,则结果是数组,而不是字典。
datasource.sorted(by: { $0.key < $1.key})
Swift 5.5
您可以使用OrderedDictionary
。它保持插入顺序。
https://stackoverflow.com/questions/68376699
复制