In Swift Charts the signature for chartForegroundStyleScale
to set the ShapeStyle for each data series is:
func chartForegroundStyleScale<DataValue, S>(_ mapping: KeyValuePairs<DataValue, S>) -> some View where DataValue : Plottable, S : ShapeStyle
The KeyValuePairs
initialiser (init(dictionaryLiteral: (Key, Value)...)
) only takes a variadic parameter so any attempt to initialise a foreground style from an array (in my case <String, Color>
) results in the error:
Cannot pass array of type '[(String, Color)]' as variadic arguments of type '(String, Color)'
In my application the names of the chart series are set dynamically from the data so although I can generate a [String : Color]
dictionary or an array of (String, Color)
tuples I can't see that it's possible to pass either of these into chartForegroundStyleScale
? Unless I'm missing something this seems like a odd limitation in Swift charts that the series names need to be hard coded for this modifier?