我正在尝试从排序的数组(字符串)创建字典。 这是代码:
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)")
这是输出:
所以我的问题是,为什么字典没有像for in循环那样接收时间?也许我错过了一些词典的行为。
提前谢谢。
答案 0 :(得分:0)
Array
在Swift中有价值观。当您致电Array(usernameComments.keys)
时,它会创建字典键的副本。当您致电.sorted
时,您正在调用创建副本的版本(.sort
进行就地排序)。在任何情况下,您都不能改变字典的键数组。但是,您可以保留数组的单独排序副本,您需要在修改字典时更新该副本。然后你可以按照排序顺序遍历字典,如:
for key in sortedKeys {
print(dictionary[key]!)
}
Apple确实有一个客观的C类,它是一个有序的哈希表。考虑NSMutableOrdered set是否是您的用例的更好的数据结构选择。顾名思义它具有您可以订购的唯一键。