我有一本字典,里面有UIColor个对象,用枚举值散列,ColorScheme:

var colorsForColorScheme: [ColorScheme : UIColor] = ...

我希望能够提取这本词典包含的所有 colored颜色 (值)的array.我想我可以使用values属性,就像迭代字典值(for value in dictionary.values {...})时使用的那样,但这会返回一个错误:

let colors: [UIColor] = colorsForColorSchemes.values
                        ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'

values方法似乎不是返回Array个值,而是返回一个更抽象的集合类型.有没有一种方法可以得到包含字典值的Array,而不用在for-in循环中提取它们?

推荐答案

从Swift 2.0开始,Dictionaryvalues属性现在返回LazyMapCollection而不是LazyBidirectionalCollection.Array类型知道如何使用以下抽象集合类型初始化自身:

let colors = Array(colorsForColorSchemes.values)

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

Swift相关问答推荐

macOS托盘应用程序中的列表显示奇怪

可编码:将字符串解码为自定义类型(ISO 8601日期,无时间组件)

是否有一个Kotlin等价的Swift s @ AddendableReport注释'

如何访问用户选定目录下的(只读)文件?

我可以在预览中通过拖动手势跳转,但在模拟器中失败

无法创建MKAssociateRegion对象

如何避免切换视图递归onChange调用SwiftUI

如何使 onKeyPress 与 TextField 快速配合使用?

Observable.create 捕获行为

是否可以使用 .task 修饰符更新基于两个值的视图

无法使用 RealityKit 播放 USDZ 动画

Vapor 4 身份验证问题 [用户未通过身份验证]

如何根据 SwiftUI 中的字体大小定义按钮的大小?

更新我的 pod 导致 GoogleDataTransport Umbrella 标头出现错误

为 UIActivityViewController Swift 设置不同的活动项

如何在 iOS Swift 中进行多线程、并发或并行?

Swift 动画 WithDuration 语法是什么?

如何在 Swift 中将 UILabel 居中?

使用 phimagemanager 将图像保存到自定义相册?

Swift if 语句 - 多个条件用逗号分隔?