В Swift 4.0 и старше протокол Sequence
имеет две версии flatMap
:
Sequence.flatMap<S>(_: (Element) -> S) -> [S.Element] where S : Sequence
Sequence.flatMap<U>(_: (Element) -> U?) -> [U]
В Swift 4.1 SE-0187 переименовывает вторую версию compactMap
:
Sequence.flatMap<S>(_: (Element) -> S) -> [S.Element] where S : Sequence
Sequence.compactMap<U>(_: (Element) -> U?) -> [U]
Вы используете версию Charts, которая была обновлена до Swift 4.1, но вы используете компилятор Swift 4.0.
Вы можете:
Переход на более старую версию Charts, в которой используется только Swift 4.0.
Обновление до Xcode 9.3, который поддерживает Swift 4.1.
Измените свою копию диаграмм, чтобы использовать flatMap
вместо compactMap
.
Добавьте «шим» в вашу копию Charts, чтобы добавить compactMap
(спасибо BasThomas ):
#if swift(>=4.1)
#else
extension Collection {
func compactMap<ElementOfResult>(
_ transform: (Element) throws -> ElementOfResult?
) rethrows -> [ElementOfResult] {
return try flatMap(transform)
}
}
#endif