具有集群的 mapView(_:didAdd:) 中的 MapKit 运行时错误
Posted
技术标签:
【中文标题】具有集群的 mapView(_:didAdd:) 中的 MapKit 运行时错误【英文标题】:MapKit runtime error in mapView(_:didAdd:) with clustering 【发布时间】:2018-04-13 09:04:13 【问题描述】:在实现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 的示例上实现方法来重现。
【问题讨论】:
【参考方案1】:我也遇到过同样的问题。如果你实现集群并提供一个 mapView(_:didAdd:) 方法,你会崩溃——这绝对是一个 Apply 框架的错误。该问题在 ios 11.3 中很容易重现,但幸运的是已在 iOS 11.4 中得到纠正。
【讨论】:
以上是关于具有集群的 mapView(_:didAdd:) 中的 MapKit 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 ios 的 mapView 上集群 MKPolygon
在具有 backgroundColor 的 MapView 上方时,TouchableOpacity 不可点击
滚动 mapView 或点击标记时,如何创建具有自定义注释和区域焦点的地图?