Swift MapKit - моя карта падает при увеличении кластеров - PullRequest
0 голосов
/ 26 июня 2018

Это ошибка:

* Завершение работы приложения из-за необработанного исключения '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 голосов
/ 07 августа 2018

Я уже нашел ошибку.Это мой ошибочный код:

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)
    }

//// guard let annotation = annotation as?Cycle else {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)
    }
}
0 голосов
/ 26 июня 2018

Добавьте проверку перед добавлением объектов в ваш массив.Но постите немного кода, чтобы мы могли дать больше отзывов.Но если судить по тому, что вы опубликовали, это указывает на то, что в массив вставляется что-то ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...