Swift MapKit-当我放大群集时,地图崩溃

时间:2018-06-25 22:48:20

标签: swift mapkit mkannotationview mapkitannotation

这是错误:

  

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* -[__ NSPlaceholderArray initWithObjects:count:]:尝试从对象中插入零对象[1]'   ***首先抛出调用堆栈:   (0x18525ed8c 0x1844185ec 0x1851f7750 0x18512aa18 0x19621fbcc 0x1960b0e40 0x196128ee8 0x18512d3a0 0x196129ab8 0x1961f8e54 0x196075eac 0x185cab3d4 0x185207aa8 0x18520776c 0x185207010 0x185204b60 0x185124da8 0x187109020 0x18f141758 0x10430352c 0x184bb5fc0)   libc ++ abi.dylib:以类型为NSException的未捕获异常终止

我遵循以下示例:

https://developer.apple.com/videos/play/wwdc2017/237/

当您放置100个标记时,此示例也崩溃了

请帮助

2 个答案:

答案 0 :(得分:0)

在将对象添加到数组中之前添加检查。但是请发布一些代码,以便我们提供更多反馈。但是仅从您发布的内容来看,就是指向数组中插入零。

答案 1 :(得分:0)

我已经找到错误。 这是我的错误代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    guard let annotation = annotation as? Cycle else { return nil }

    switch annotation.type {
    case .unicycle:
        return UnicycleAnnotationView(annotation: annotation, reuseIdentifier: UnicycleAnnotationView.ReuseID)
    case .bicycle:
        return BicycleAnnotationView(annotation: annotation, reuseIdentifier: BicycleAnnotationView.ReuseID)
    case .tricycle:
        return TricycleAnnotationView(annotation: annotation, reuseIdentifier: TricycleAnnotationView.ReuseID)
    }

///// 警卫让注解=注解为?循环其他{return nil}

任何时候都不能为空

这是很好的代码:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    guard let annotation = annotation as? Cycle else { return ClusterAnnotationView() }

    switch annotation.type {
    case .unicycle:
        return UnicycleAnnotationView(annotation: annotation, reuseIdentifier: UnicycleAnnotationView.ReuseID)
    case .bicycle:
        return BicycleAnnotationView(annotation: annotation, reuseIdentifier: BicycleAnnotationView.ReuseID)
    case .tricycle:
        return TricycleAnnotationView(annotation: annotation, reuseIdentifier: TricycleAnnotationView.ReuseID)
    }
}