gpt4 book ai didi

arrays - iOS - 字典中的顺序问题

转载 作者:行者123 更新时间:2023-11-30 11:55:12 27 4
gpt4 key购买 nike

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

  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 in 循环的时间?也许我错过了字典的一些行为。

提前谢谢您。

最佳答案

Array 在 Swift 中具有值语义。当您调用 Array(usernameComments.keys) 时,它会创建字典键的副本。当您调用 .sorted 时,您正在调用创建副本的版本(.sort 进行就地排序)。在任何情况下,你都不能改变字典的键数组。但是,您可以保留数组的单独排序副本,以便在修改字典时随时更新该副本。然后您可以按排序顺序迭代字典,如下所示:

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

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

关于arrays - iOS - 字典中的顺序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com