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 - 多维数组排序的主要内容,如果未能解决你的问题,请参考以下文章