Swift - 多维数组排序

Posted

技术标签:

【中文标题】Swift - 多维数组排序【英文标题】:Swift - multidimensional array sort 【发布时间】:2016-02-20 17:38:32 【问题描述】:

为了以编程方式创建表格视图,我有一个如下所示的菜单设置,它包含部分和单元格。

var menu = [
    "section 1": [
        "point a",
        "point b",
        "point c"
    ],
    "section 2": [
        "point a",
        "point b",
        "point c",
        "point d",
        "point e"
    ],
    "section 3": [
        "point a"
    ]
]

struct Sections 
    var sectionName : String!
    var sectionObjects : [String]!


var sections = [Sections]()

for (key, value) in menu 
    print("\(key) -> \(value)")
    sections.append(Sections(sectionName: key, sectionObjects: value))

所以我希望它完全按照这个顺序插入(第 1 节 -> 第 2 节 -> 第 3 节)。

但实际上是按其他顺序插入的(从打印开始):

section 2 -> ["point a", "point b", "point c", "point d", "point e"]
section 1 -> ["point a", "point b", "point c"]
section 3 -> ["point a"]

我绝对不知道为什么菜单数组中的顺序会改变。 任何人都可以想象为什么或有一些建议吗?

谢谢和问候!

【问题讨论】:

【参考方案1】:

Swift 中的字典没有顺序。因此,当您遍历一个时,您不一定会按照添加它们的顺序遇到它们。

查看此答案了解更多详情:https://***.com/a/24111700/3517395

【讨论】:

【参考方案2】:

那是因为Dictionary 没有订单。在迭代它们之前,您必须自己对键进行排序:

for key in menu.keys.sort() 
    let value = menu[key]!
    sections.append(Sections(sectionName: key, sectionObjects: value))

【讨论】:

for key in menu.keys.sort() 遍历按字母顺序排序的键。它在我的 Mac 上按预期工作。

以上是关于Swift - 多维数组排序的主要内容,如果未能解决你的问题,请参考以下文章

按子项的值对多维数组进行排序

在 Swift 中通过计数从多维数组中找到最大的数组

Swift、SpriteKit 和带有 CGPoint 的多维数组

多维数组排序

PHP:按子数组的出现次数对多维数组进行排序

如何在swift 3中的不同部分下显示多维数组