Ho un dizionario contenente UIColor
oggetti hash per un valore di enumerazione, ColorScheme
:Swift Dizionario: ottenere i valori come array di
var colorsForColorScheme: [ColorScheme : UIColor] = ...
Mi piacerebbe essere in grado di estrarre un array di tutti i colori (i valori) contenuto da questo dizionario. Ho pensato che avrei potuto utilizzare la proprietà values
, come viene utilizzato quando l'iterazione di valori del dizionario (for value in dictionary.values {...}
), ma questo restituisce un errore:
let colors: [UIColor] = colorsForColorSchemes.values
~~~~~~~~~~~~~~~~~~~~~^~~~~~~
'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'
Sembra che invece di restituire un Array
di valori, il metodo values
restituisce un tipo di raccolta più astratto. C'è un modo per ottenere uno Array
contenente i valori del dizionario senza estrarli in un ciclo for-in
?
puoi anche lanciarlo come un array di oggetti tipizzati pure. funziona alla grande! grazie let colors = [CustomColorObject] (colorsForColorSchemes.values) – bolnad
Sembra che in Swift 2.0, Dictionary.values restituisca ora LazyMapCollection anziché LazyBidirectionalCollection. Sfortunatamente, .array non è definito su LazyMapCollection. Tuttavia, il modo Array (dictionary.values) funziona ancora bene, poiché i tipi di array sanno come inizializzarsi da LazyMapCollection. –
Si noti che l'ordine dei valori potrebbe essere inaspettato. Ad esempio '[0:" small ", 1:" medium ", 2:" large "]' probabilmente * NON * genererà '[" small "," medium "," large "]' –