首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >排序数组返回字典

排序数组返回字典
EN

Stack Overflow用户
提问于 2021-07-14 10:52:12
回答 2查看 126关注 0票数 0

我的目标如下:

代码语言:javascript
代码运行次数:0
运行
复制
private var datasource: [Int: [MyCustomModel]] = [:]

在稍后阶段,我需要根据datasource属性(升序)对key进行排序。

我这样做如下:

代码语言:javascript
代码运行次数:0
运行
复制
let sorted = datasource.sorted(by: {$0.key < $1.key})

这可以很好地按照key (Int)值对内容进行排序,尽管我不能将datasource设置为sorted属性。

Xcode显示以下错误

不能将类型'[Dictionary.Element]‘(又称'Array<(key: Int,value: Array)>')的值赋给'[Int : MyCustomModel]’类型。

我得到返回的类型,排序后是字典,而不是数组。我怎样才能克服这个问题?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-14 12:21:21

我没有找到同样的解决方案来对字典进行排序,但是您可以这样做。

它对我有用。

制作钥匙和价值的结构。

代码语言:javascript
代码运行次数:0
运行
复制
struct STRUCT_TEMP
{
    var key : Int
    var value : [MyCustomModel]
}

创建结构变量。

代码语言:javascript
代码运行次数:0
运行
复制
var structTemp : [STRUCT_TEMP] = []

按如下结构转换您的字典:

代码语言:javascript
代码运行次数:0
运行
复制
self.structTemp = datasource.map({ STRUCT_TEMP(key: $0.key, value: $0.value) })

现在,您可以使用structTemp数组执行任何操作。和排序一样,过滤器也可以在任何地方使用这个数组,而不是字典。

票数 1
EN

Stack Overflow用户

发布于 2021-07-14 11:19:55

代码语言:javascript
代码运行次数:0
运行
复制
let datasource: [Int: [MyCustomModel]] = [:]

字典无法排序!。如果使用sorted(by: { $0.key < $1.key})datasource进行排序,则结果是数组,而不是字典。

代码语言:javascript
代码运行次数:0
运行
复制
datasource.sorted(by: { $0.key < $1.key})

Swift 5.5

您可以使用OrderedDictionary。它保持插入顺序。

https://www.advancedswift.com/ordereddictionary/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68376699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档