iOS - 在字典问题中排序

问题描述 投票:0回答:1

我正在尝试从排序的数组(字符串)创建一个字典。这是代码:

  var usernameCommentsSorted: [String : [String : String]] = [:]
  print("not sorted: \(Array(usernameComments.keys))")
  let sortedKeys = Array(usernameComments.keys).sorted()
  print("sorted: \(sortedKeys)")

  for time in sortedKeys {

    print("time in for loop -- \(time) --")
    usernameCommentsSorted[time] = ["F" : "F"]

  }

  print("sorted final dictionary: \(usernameCommentsSorted)")

这是输出:

image

所以我的问题是,为什么字典没有像for循环那样接收时间?也许我错过了一些词典的行为。

先感谢您。

arrays swift dictionary
1个回答
0
投票

Array在Swift中有价值观。当你调用Array(usernameComments.keys)时,它会创建一个字典键的副本。当您调用.sorted时,您正在调用创建副本的版本(.sort执行就地排序)。在任何情况下,您都不能改变字典的键数组。但是,您可以保留数组的单独排序副本,您需要在修改字典时更新该副本。然后你可以按照排序顺序遍历字典,如:

for key in sortedKeys {
   print(dictionary[key]!)
}

Apple确实有一个客观的C类,它是一个有序的哈希表。考虑NSMutableOrdered set是否是您的用例的更好的数据结构选择。顾名思义它具有您可以订购的唯一键。

© www.soinside.com 2019 - 2024. All rights reserved.