1. ホーム
  2. arrays

[解決済み] Swiftの辞書です。値を配列として取得する

2022-04-21 07:02:23

質問

を含む辞書があります。 UIColor オブジェクトを enum 値でハッシュ化したものです。 ColorScheme :

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

この辞書に含まれるすべての色(値)の配列を取り出すことができればと思います。私は values プロパティは、辞書の値を反復処理するときに使用されるものです ( for value in dictionary.values {...} ) が、これはエラーを返します。

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

を返すというより、むしろ Array の値の values メソッドは、より抽象的なコレクションタイプを返します。を取得する方法はありますか? Array で抽出することなく、辞書の値を含む for-in のループ?

どのように解決するのですか?

Swift 2.0時点では。 Dictionary 's values プロパティが LazyMapCollection の代わりに LazyBidirectionalCollection . その Array 型は、この抽象的なコレクション型を使って自分自身を初期化する方法を知っています。

let colors = Array(colorsForColorSchemes.values)

Swift の型推論では、すでにこれらの値が UIColor オブジェクトの型キャスティングが不要なのはありがたいですね。