类型值{EnumeratedSequence< [CGPoint]>'没有会员' compactMap'

时间:2018-04-25 14:15:05

标签: ios swift

我想在我的项目中实现图表,但是当我打开演示项目时,我得到了这个错误类型' EnumeratedSequence< [CGPoint]>'没有会员' compactMap'我看到此Value of type 'CGPoint' has no member 'makeWithDictionaryRepresentation' in swift 3链接,但错误未解决。

1 个答案:

答案 0 :(得分:7)

在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]

您使用的是已更新为Swift 4.1的图表版本,但您使用的是Swift 4.0编译器。

你可以:

  1. 降级为仅使用Swift 4.0的旧版图表。

  2. 升级到Xcode 9.3,它支持Swift 4.1。

  3. 将图表副本更改为使用flatMap而不是compactMap

  4. 在您的图表副本中添加“垫片”以添加compactMap(感谢BasThomas):

    #if swift(>=4.1)
    #else
    extension Collection {
      func compactMap<ElementOfResult>(
        _ transform: (Element) throws -> ElementOfResult?
      ) rethrows -> [ElementOfResult] {
        return try flatMap(transform)
      }
    }
    #endif