为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2019-10-21 15:39:58
我试图显示字典格式的数据。下面是三个尝试。第一次尝试,输出顺序将完全更改。第二次尝试,输出顺序与输入相同。但是,在第三次尝试中,我将变量声明为NSDictionary。我收到的确切输出。为什么字典会发生变化?请指导我。我搜索了Swift的Dictionary标签。但是我找不到。//First Attemptvar dict : Dictionary = ["name1" : "Loy", "name2" : "Roy"]        println(dict)//output:[name2: Roy, name1: Loy]//Second Attemptvar dict : Dictionary = ["name2" : "Loy", "name1" : "Roy"]        println(dict)//output:[name2: Loy, name1: Roy]-----------------------------------------------------------//Third Attempt With NSDictionaryvar dict : NSDictionary = ["name1" : "Loy", "name2" : "Roy"]            println(dict)//output:{    name1 = Loy;    name2 = Roy;}另一查询:我已使用操场进行验证。我的屏幕截图如下:在这里,在NSDictionary中,我首先给name5命名,但是在右边显示name2,然后在println中,它以升序显示。为什么会这样?此处,在Dictionary中,我首先给出了name5,但在右侧显示了name2,然后在println中显示了如何在Dictionary行上使用它。为什么会这样?
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您无法对字典进行排序,但是可以对它的键进行排序并按以下步骤循环遍历:


let myDictionary = ["name1" : "Loy", "name2" : "Roy", "name3" : "Tim", "name4" : "Steve"]   // ["name1": "Loy", "name2": "Roy", "name3": "Tim", "name4": "Steve"]



let sorted = myDictionary.sorted {$0.key < $1.key}  // or {$0.value < $1.value} to sort using the dictionary values

print(sorted) // "[(key: "name1", value: "Loy"), (key: "name2", value: "Roy"), (key: "name3", value: "Tim"), (key: "name4", value: "Steve")]\n"

for element in sorted {

    print("Key = \(element.key) Value = \(element.value)" )

}


查看完整回答
反对 回复 2019-10-21
?
精慕HU

TA贡献1845条经验 获得超8个赞

无论是NSDictionary也Swift::Dictionary令它的存储。区别在于某些NSDictionary对象在打印时会对其输出进行排序,而Swift::Dictionary不会。


从以下文档中-[NSDictionary description]:


如果字典中的每个键都是一个NSString对象,则按键升序列出条目,否则未定义条目的列出顺序。此属性旨在产生可读输出,用于调试目的,而不是用于序列化数据。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 1145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信