Почему это создает ошибку - призрак NSArray? - PullRequest
0 голосов
/ 28 декабря 2011

Когда я включаю (раскомментирую) эту строку кода, я получаю сбой SIGABRT - что странно для меня, потому что у меня никогда не было этой проблемы раньше.

cell.textLabel.text = [[annotations objectAtIndex:indexPath.row] title];

Ошибка, которую я получаю:

2011-12-28 14: 03: 00.118 MapWithTableModalView-001 [2006: 11603] Локализованная база данных имен отсутствует 2011-12-28 14: 03: 01.110 MapWithTableModalView-001 [2006: 11603] * Завершение работы приложения из-за неперехваченного исключения 'NSRangeException', причина: '* - [__ NSArrayM objectAtIndex:]: индекс 0 за пределами для пустого массива'

Проект не создаетошибки или предупреждения.

В основе проекта лежат 2 UIViewController, которые скользят друг над другом с помощью кнопки - ModalViewContoller.Когда я нажимаю кнопку, происходит сбой.

Просто добавление кода здесь - это часть учебника, но я все еще хочу его получить :-) Я знаю, что это не похоже на обычный массив,но данные устанавливаются так в проекте.Как только я это выясню, я хочу установить это в Plist.

-(void)loadOurAnnotations
    {
CLLocationCoordinate2D workingCoordinate;


    #pragma mark - Apple Stores
workingCoordinate.latitude = 51.514298;
workingCoordinate.longitude = -73.973034;
iCodeBlogAnnotation *appleStore1 = [[iCodeBlogAnnotation alloc]     initWithCoordinate:workingCoordinate];
    [appleStore1 setTitle:@"Apple Store 5th Ave."];
[appleStore1 setSubtitle:@"Apple's Flagship Store"];
[appleStore1 setAnnotationType:iCodeBlogAnnotationTypeApple];

[viewController.mapView addAnnotation:appleStore1];

workingCoordinate.latitude = 51.514298;
workingCoordinate.longitude = -0.141949;
iCodeBlogAnnotation *appleStore2 = [[iCodeBlogAnnotation alloc] initWithCoordinate:workingCoordinate];
[appleStore2 setTitle:@"Apple Store St. Regent"];
[appleStore2 setSubtitle:@"London England"];
[appleStore2 setAnnotationType:iCodeBlogAnnotationTypeApple];

[viewController.mapView addAnnotation:appleStore2];



     }

Если вы хотите, чтобы я опубликовал какой-либо дополнительный код, я был бы рад, но я не уверен, где искать больше иследовательно, на самом деле не знаю, какой бит опубликовать, чтобы быть полезным.

-Джефф

1 Ответ

2 голосов
/ 28 декабря 2011

Ваш массив аннотаций пуст (содержит ноль элементов).

Глядя на ваш метод -loadOurAnnotations, вы никогда не устанавливали массив annotations, который читаете. Попробуйте обновить эту строку примерно так, как показано ниже, и посмотрите, поможет ли это:

// I'm not sure where viewController comes from but I'll assume it's a method on this
// class and that it's the same class that defines -loadOurAnnotations. If it's not,
// update this appropriately to get access to the mapView to which you've added
// the annotations
cell.textLabel.text = [[[[viewController mapView] annotations] objectAtIndex:indexPath.row] title];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...