首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift字典:以数组形式获取值

Swift字典:以数组形式获取值
EN

Stack Overflow用户
提问于 2014-11-18 14:41:47
回答 6查看 103.6K关注 0票数 173

我有一个字典,其中包含通过枚举值ColorScheme散列的UIColor对象

代码语言:javascript
复制
var colorsForColorScheme: [ColorScheme : UIColor] = ...

我希望能够提取这个字典包含的所有颜色(值)的数组。我认为我可以使用在迭代字典值(for value in dictionary.values {...})时使用的values属性,但这将返回一个错误:

代码语言:javascript
复制
let colors: [UIColor] = colorsForColorSchemes.values
                        ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'

values方法似乎不是返回值的Array,而是返回一个更抽象的集合类型。有没有一种方法可以在不从for-in循环中提取字典值的情况下获得包含这些值的Array

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-11-18 14:41:47

从SWIFT2.0开始,Dictionaryvalues属性现在返回LazyMapCollection而不是LazyBidirectionalCollectionArray类型知道如何使用此抽象集合类型初始化自身:

代码语言:javascript
复制
let colors = Array(colorsForColorSchemes.values)

Swift的类型推断已经知道这些值是UIColor对象,所以不需要类型转换,这很好!

票数 312
EN

Stack Overflow用户

发布于 2017-12-18 17:46:00

使用colorsForColorScheme.map({$0.value})

票数 10
EN

Stack Overflow用户

发布于 2016-11-05 11:07:57

您可以在LazyMapCollection上创建扩展模块

代码语言:javascript
复制
public extension LazyMapCollection  {

    func toArray() -> [Element]{
        return Array(self)
    }
}

colorsForColorSchemes.values.toArray()colorsForColorSchemes.keys.toArray()

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26988167

复制
相关文章

相似问题

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