Swift-字典中的存储值顺序已完全更改

我试图显示字典格式的数据。下面是三个尝试。第一次尝试,输出顺序将完全更改。第二次尝试,输出顺序与输入相同。但是,在第三次尝试中,我将变量声明为NSDictionary。我收到的确切输出。为什么字典会发生变化?请指导我。我搜索了Swift的Dictionary标签。但是我找不到。


//First Attempt

var dict : Dictionary = ["name1" : "Loy", "name2" : "Roy"]

        println(dict)


//output:

[name2: Roy, name1: Loy]


//Second Attempt

var dict : Dictionary = ["name2" : "Loy", "name1" : "Roy"]

        println(dict)


//output:

[name2: Loy, name1: Roy]

-----------------------------------------------------------


//Third Attempt With NSDictionary

var dict : NSDictionary = ["name1" : "Loy", "name2" : "Roy"]

            println(dict)


//output:

{

    name1 = Loy;

    name2 = Roy;

}

另一查询:我已使用操场进行验证。我的屏幕截图如下:

http://img2.mukewang.com/5dad60e00001b4a008030074.jpg

在这里,在NSDictionary中,我首先给name5命名,但是在右边显示name2,然后在println中,它以升序显示。为什么会这样?

http://img3.mukewang.com/5dad60e90001897c07440065.jpg

此处,在Dictionary中,我首先给出了name5,但在右侧显示了name2,然后在println中显示了如何在Dictionary行上使用它。为什么会这样?



慕桂英546537
浏览 1207回答 3
3回答

翻翻过去那场雪

您无法对字典进行排序,但是可以对它的键进行排序并按以下步骤循环遍历:let myDictionary = ["name1" : "Loy", "name2" : "Roy", "name3" : "Tim", "name4" : "Steve"]&nbsp; &nbsp;// ["name1": "Loy", "name2": "Roy", "name3": "Tim", "name4": "Steve"]let sorted = myDictionary.sorted {$0.key < $1.key}&nbsp; // or {$0.value < $1.value} to sort using the dictionary valuesprint(sorted) // "[(key: "name1", value: "Loy"), (key: "name2", value: "Roy"), (key: "name3", value: "Tim"), (key: "name4", value: "Steve")]\n"for element in sorted {&nbsp; &nbsp; print("Key = \(element.key) Value = \(element.value)" )}

精慕HU

无论是NSDictionary也Swift::Dictionary令它的存储。区别在于某些NSDictionary对象在打印时会对其输出进行排序,而Swift::Dictionary不会。从以下文档中-[NSDictionary description]:如果字典中的每个键都是一个NSString对象,则按键升序列出条目,否则未定义条目的列出顺序。此属性旨在产生可读输出,用于调试目的,而不是用于序列化数据。
打开App,查看更多内容
随时随地看视频慕课网APP