我有一本字典,其中包含UIColor用枚举值散列的对象ColorScheme:
UIColor
ColorScheme
var colorsForColorScheme: [ColorScheme : UIColor] = ...
我希望能够提取此字典包含的所有颜色(值)的数组。我以为我可以使用该values属性,就像遍历字典值(for value in dictionary.values {...})一样,但这会返回错误:
values
for value in dictionary.values {...}
let colors: [UIColor] = colorsForColorSchemes.values ~~~~~~~~~~~~~~~~~~~~~^~~~~~~ 'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'
似乎Array该values方法返回了一个更抽象的集合类型,而不是返回值的an 。有没有一种方法可以获取Array包含字典值的而不for- in循环提取它们的值?
Array
for- in
从Swift 2.0开始,Dictionary的values属性现在返回LazyMapCollection而不是LazyBidirectionalCollection。该Array类型知道如何使用此抽象集合类型进行初始化:
Dictionary
LazyMapCollection
LazyBidirectionalCollection
let colors = Array(colorsForColorSchemes.values)
Swift的类型推断已经知道这些值是UIColor对象,因此不需要类型转换。这很好!