mam słownika zawierającego UIColor
przedmiotów przerywanych przez ENUM, ColorScheme
:Swift Dictionary uzyskać wartości w tablicy
var colorsForColorScheme: [ColorScheme : UIColor] = ...
ja jak w stanie wyekstrahować szereg wszystkich kolorów (wartości) zawarte w tym słowniku. Myślałem, że mogę użyć właściwości values
, jaka jest używana podczas iteracji nad wartości słowniku (for value in dictionary.values {...}
), ale zwraca błąd:
let colors: [UIColor] = colorsForColorSchemes.values
~~~~~~~~~~~~~~~~~~~~~^~~~~~~
'LazyBidrectionalCollection<MapCollectionView<Dictionary<ColorScheme, UIColor>, UIColor>>' is not convertible to 'UIColor'
Wydaje się, że zamiast zwrócenie Array
wartości, metoda values
zwraca bardziej abstrakcyjny typ kolekcji. Czy istnieje sposób na uzyskanie wartości Array
zawierającej wartości słownika bez wyodrębniania ich w pętli for-in
?
można również rzucać go jako tablicę z wpisane przedmiotów, jak również. działa świetnie! thanks let colors = [CustomColorObject] (colorsForColorSchemes.values) – bolnad
Wygląda na to, że w Swift 2.0, Dictionary.values zwraca teraz LazyMapCollection w przeciwieństwie do LazyBidirectionalCollection. Niestety, .array nie jest zdefiniowany w LazyMapCollection. Jednak metoda Array (dictionary.values) nadal działa dobrze, ponieważ typy tablic wiedzą, jak zainicjować się z LazyMapCollection. –
Należy pamiętać, że kolejność wartości może być nieoczekiwana. Na przykład '[0:" mały ", 1:" średni ", 2:" duży "]' prawdopodobnie * NIE * wygeneruje '[" mały "," średni "," duży "]' –