我试图从OrderedDictionary中使用集合,当我试图将字典转换为OrderedDictionary时,我得到了以下错误。
Cannot convert value of type '[String : Double]' to specified type 'OrderedDictionary<Key, Value>'
let values: [String: Double]
let sortedDict: OrderedDictionary<String, Double> = values发布于 2022-06-16 17:53:44
编译器不会让您直接转换它。相反,将值传递给初始化程序。
let sortedDict: OrderedDictionary<String, Double> = OrderedDictionary(uniqueKeysWithValues: values)发布于 2022-06-16 18:01:50
您可以使用uncheckedUniqueKeysWithValues初始化程序:
let sortedDict = OrderedDictionary(uncheckedUniqueKeysWithValues: values)使用这个初始化项是安全的,因为values是一个字典,其键总是唯一的。根据文档注释,在优化的构建中,这“有点快”。
但是,与名称建议不同的是,以这种方式创建的字典没有排序。“order”只是指保证条目按插入顺序排列。由于values中的条目是无序的,这里的sortedDict将以随机的顺序得到value的条目,并且它们将保持在sortedDict中的顺序。
如果您希望按键排序,则需要自己对其进行排序:
let sortedDict = OrderedDictionary(uncheckedUniqueKeysWithValues:
values.sorted { $0.key < $1.key }
)https://stackoverflow.com/questions/72649890
复制相似问题