Swift 由于MKPointAnnotation上的选择器无法识别而导致崩溃

Swift 由于MKPointAnnotation上的选择器无法识别而导致崩溃,swift,uicollectionview,mkmapview,mkannotationview,mkclusterannotation,Swift,Uicollectionview,Mkmapview,Mkannotationview,Mkclusterannotation,我已经为MKMapView完成了集群 class BaseMKPointAnnotation:MKPointAnnotation{ var索引:Int! } 类ClusteredAnnotationView:MKMarkerAnnotationView{ 重写init(注释:MKAnnotation?,重用标识符:String?){ init(注释:注释,reuseIdentifier:reuseIdentifier) //只需设置clusteringIdentifier即可启用群集 clust

我已经为MKMapView完成了集群

class BaseMKPointAnnotation:MKPointAnnotation{
var索引:Int!
}
类ClusteredAnnotationView:MKMarkerAnnotationView{
重写init(注释:MKAnnotation?,重用标识符:String?){
init(注释:注释,reuseIdentifier:reuseIdentifier)
//只需设置clusteringIdentifier即可启用群集
clusteringIdentifier=“AnnotationView”
//clusteringIdentifier=nil
}
必需的初始化?(编码器aDecoder:NSCoder){
fatalError(“初始化(编码者:)尚未实现”)
}
重写函数prepareForDisplay(){
super.prepareForDisplay()
displayPriority=.defaultHigh
glyphImage=Images.annotationIcon
}
}
扩展MKMapView{
func animateToPoint(uCoordination:CLLocationCoordinate2D,动画:Bool){
设坐标区域=MK坐标区域(中心:坐标,纬度计:250.0,纵向计:250.0)
self.setRegion(坐标区域,动画:动画)
}
}
所以我有了我的ViewController。当集合视图调用
mapViewAnimateTo
时,它会崩溃。虽然它不经常崩溃,但它确实崩溃了

类ViewController:UIViewController{
//方法,该方法将向mapView添加注释。
私有函数addAnnotation(i:Int,coordinate:CLLocationCoordinate2D){
let annotation=BaseMKPointAnnotation()
annotation.index=i//用于区分注释的索引。
annotation.coordinate=坐标
mapView.addAnnotation(注释)
}
func mapView(uMapView:MKMapView,viewFor annotation:MKAnnotation)->MKAnnotationView{
如果注释是MKUserLocation{
归零
}
var annotationView=self.mapView.dequeueReusableAnnotationView(带标识符:“Pin”)
如果annotationView==nil{
annotationView=ClusteredAnnotationView(注释:注释,重用标识符:“Pin”)
}否则{
annotationView?.annotation=注释
}
返回注释视图
}
//当水平集合视图停止滚动时,调用此方法。
func mapViewAnimateTo(uu索引:Int){
//获取点的数组
让点=presenter.getCollectedPoints(索引).坐标
//协调以设置动画。
设坐标=CLLocationCoordinate2D(纬度:点[0]。纬度,经度:点[0]。经度)
//为坐标设置动画
/***********有时它会在这里崩溃***********/
mapView.AnimatePoint(坐标,动画:真)
用于mapView.annotations中的注释{
如果annotation.coordinate.latitude==coordinate.latitude&&annotation.coordinate.longitude==coordinate.longitude{
//将注释标记为选中。
/***********有时它会在这里崩溃***********/
mapView.selectAnnotation(注释,动画:true)
}
}
}
}
它与下面的报告崩溃,我如何才能解决这个崩溃。这里我附上了一张坠机的照片

2019-04-17 16:17:21.033478+0530演示应用[13618:213851]-[Demo_App.BaseMKPointAnnotation memberAnnotations]:发送到实例0x6000007e2da0的无法识别的选择器
2019-04-17 16:17:21.042907+0530演示应用程序[13618:213851]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[Demo_App.BaseMKPointAnnotation memberAnnotations]:未识别的选择器发送到实例0x6000007e2da0'
***第一次抛出调用堆栈:
(
0 CoreFoundation 0x0000000115c0a6fb例外预处理+331
1 libobjc.A.dylib 0x00000001151aeac5 objc_异常_抛出+48
2 CoreFoundation 0x0000000115c28ab4-[NSObject(NSObject)不识别选择器:][132
3 CoreFoundation 0x0000000115c0f443\uuuuuuuuuuuu+1443
4 CoreFoundation 0x0000000115c11238\u CF\u转发\u准备\u 0+120
5映射套件0x0000000116577298-[MKMapView注释容器:RequestAddingClusterforAnnotationView:+168
6地图套件0x0000000116703e7c-[MKAnnotationContainerView\u UpdateClusterableNotationViews:带ID:+461
7 CoreFoundation 0x0000000115c7a9c2-[\uu\NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:+226
8映射套件0x00000001166ff3fc-[MKAnnotationContainerView更新注释视图原因:+282
9地图套件0x0000000116702cbc-[MKAnnotationContainerView FinishadingAnnotationView]+29
10地图套件0x000000011657f59f-[MKMapView注释管理器:didAddAnnotationRepresentations:][53
11 MapKit 0x000000011663d24e-[MKAnnotationManager更新注释]+1660
12地图套件0x000000011656e238-[MKMapView_didChangeRegionMidstream:+208
13映射套件0x00000001165734a2-[MKMapView映射层:didChangeRegionAnimated:+67
14矢量工具包0x000000012f00ae54-[VKMPView映射:didChangeRegionAnimated:+122
15矢量套件0x000000012f089f6b\uuuu86-[VKMapCameraController\uAnimateToPosition:俯仰:偏航:持续时间:计时曲线:完成:][uBlock\uInvoke.227+75
16矢量工具包0x000000012f042747-[VKAnimation stopAnimation:+106
17矢量工具包0x000000012f042b4c-[VKTimedAnimation stopAnimation:][44
18矢量工具包0x000000012f042c2e-[VKTimedAnimation-timerfired:+47
19矢量工具包0x000000012efb0b24_ZN2MD16动画管理器12O