mapView(_:didAdd :)中的MapKit运行时错误与集群

MapKit runtime error in mapView(_:didAdd:) with clustering

我在执行 MKMapViewDelegate 的方法 mapView(_:didAdd:) 时出现意外错误。它从 Xcode 9.3 开始发生,而 Xcode 9.2 没有发生。使用集群时,在使用 views 数组时出现运行时错误。

func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView]) {
    if let view = views.first { // Fatal error: NSArray element failed to match the Swift Array Element type
        print(type(of: view))
    }
}

据我了解,views 数组并不像预期的那样只包含 MKAnnotationView 个实例。这是 views 崩溃时包含的内容。

我看到里面有一个 MKClusterAnnotation 实例。如果这是真的,我会得到错误,但是 为什么 会发生这种情况?我做错了什么吗?

通过在 WWDC 2017 - Session 237 What's New in MapKit.

的样本上实施该方法,可以很容易地重现这一点

我遇到过同样的问题。如果你实现集群并提供一个 mapView(_:didAdd:) 方法,你会崩溃——这绝对是一个 Apply 框架错误。该问题在 iOS 11.3 中很容易重现,但幸运的是在 iOS 11.4 中已得到纠正。