Значение типа 'EnumeratedSequence <[CGPoint]>' не имеет члена 'compactMap' - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу реализовать диаграммы в своем проекте, но когда я открываю демонстрационный проект, я получаю эту ошибку. Значение типа 'EnumeratedSequence <[CGPoint]>' не имеет члена 'compactMap'. Я вижу это Значение типа 'CGPoint «не имеет члена» makeWithDictionaryRepresentation 'в быстрой ссылке 3 , но ошибка не устранена.

1 Ответ

0 голосов
/ 25 апреля 2018

В 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.

Вы можете:

  1. Переход на более старую версию Charts, в которой используется только Swift 4.0.

  2. Обновление до Xcode 9.3, который поддерживает Swift 4.1.

  3. Измените свою копию диаграмм, чтобы использовать flatMap вместо compactMap.

  4. Добавьте «шим» в вашу копию Charts, чтобы добавить compactMap (спасибо BasThomas ):

    #if swift(>=4.1)
    #else
    extension Collection {
      func compactMap<ElementOfResult>(
        _ transform: (Element) throws -> ElementOfResult?
      ) rethrows -> [ElementOfResult] {
        return try flatMap(transform)
      }
    }
    #endif
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...