首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OrderedDictionary无法将类型“[String:Double]”的值转换为指定类型“OrderedDictionary<Key,Value>”

OrderedDictionary无法将类型“[String:Double]”的值转换为指定类型“OrderedDictionary<Key,Value>”
EN

Stack Overflow用户
提问于 2022-06-16 17:42:43
回答 2查看 49关注 0票数 1

我试图从OrderedDictionary中使用集合,当我试图将字典转换为OrderedDictionary时,我得到了以下错误。

Cannot convert value of type '[String : Double]' to specified type 'OrderedDictionary<Key, Value>'

代码语言:javascript
复制
let values: [String: Double]

let sortedDict: OrderedDictionary<String, Double> = values
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-16 17:53:44

编译器不会让您直接转换它。相反,将值传递给初始化程序。

代码语言:javascript
复制
let sortedDict: OrderedDictionary<String, Double> = OrderedDictionary(uniqueKeysWithValues: values)
票数 1
EN

Stack Overflow用户

发布于 2022-06-16 18:01:50

您可以使用uncheckedUniqueKeysWithValues初始化程序:

代码语言:javascript
复制
let sortedDict = OrderedDictionary(uncheckedUniqueKeysWithValues: values)

使用这个初始化项是安全的,因为values是一个字典,其键总是唯一的。根据文档注释,在优化的构建中,这“有点快”。

但是,与名称建议不同的是,以这种方式创建的字典没有排序。“order”只是指保证条目按插入顺序排列。由于values中的条目是无序的,这里的sortedDict将以随机的顺序得到value的条目,并且它们将保持在sortedDict中的顺序。

如果您希望按键排序,则需要自己对其进行排序:

代码语言:javascript
复制
let sortedDict = OrderedDictionary(uncheckedUniqueKeysWithValues: 
    values.sorted { $0.key < $1.key }
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72649890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档