【发布时间】:2021-12-28 08:51:23
【问题描述】:
我从 API 获取字典 [String: Int],按值排序。在那,我得到了一个元组数组,在那个元组数组中,我需要分隔键并希望以相同的排序顺序使用这些键创建一个数组。
我尝试了一种从该数组中获取对象并将其添加到字典中的方法,但它无法正常工作,因为在添加键时或添加键之后字典变得无序,需要帮助来解决此问题
尝试过的代码
let personalInfoDict = screenConfigResponse?.screenConfiguration?.personalInformation
let personalDict : [String : Int]?
if let dict = personalInfoDict, dict.count > 0 {
personalDict = self.sortWithKeys(dict)
}
func sortWithKeys(_ dict: [String: Int]) -> [String: Int] {
let sorted = dict.sorted(by: { $0.value < $1.value })
var newDict: [String: Int] = [:]
for sortedDict in sorted {
newDict[sortedDict.key] = sortedDict.value
}
return newDict
}
在进行排序时,我得到了正确排序的顺序,但是当我循环并将其添加到 newDict 中时,它是无序的,有没有办法只从元组数组中获取键
【问题讨论】:
-
Dictionary未排序,这就是您的代码不起作用的原因。毕竟它是键访问,而不是索引访问。现在有一个新对象,它是一个排序字典,它是OrderedDictionary。见advancedswift.com/ordereddictionary/… -
@Larme 好的,会检查这个,感谢分享这篇文章
-
@Larme 但是,您必须单独添加该包,这不是核心 Swift 的一部分。
-
是的@Sulthan,有没有其他方法可以做到这一点,而不添加那个包
-
将键排序到一个新数组中,然后在访问字典时使用该数组
标签: ios arrays swift dictionary tuples