Исключение [NSNull isEqualToString:]: нераспознанный селектор, когда я нажимаю на calloutAccessoryControlTapped - PullRequest
1 голос
/ 12 мая 2011

У меня проблема с этим исключением, фактически, когда я нажимаю на кнопку calloutAccessoryControlTapped на выводе, я получаю это исключение, я пытаюсь отследить ошибку с помощью NSLog в консоли, и я нашел единственный вывод что вызвало это исключение, имеет значение <null>, я объясняю с помощью некоторого кода:

for (int i=0; i<[array count]; i++) {
           NSDictionary *stationEnCours=[array objectAtIndex:i];
           location2D = (CLLocationCoordinate2D){ .latitude = lat, .longitude = lng };
           MyLocation *annotation=[[[MyLocation alloc]initWithName:ensStation distanceVersLaStation:distance coordinate:location2D]autorelease];

//here we set the properties before we get call to addAnnotation annotation.stationAdress=[stationEnCours objectForKey:@"ssiphone_adresse"];
           NSLog(@"%@",annotation.stationAdress);
           [mapView addAnnotation:annotation];
}

У меня есть 4 станции, в консоли я получил это:

2011-05-11 22:27:11.768 TopStation[2370:207] A 51 - Aire de la Champouse
2011-05-11 22:27:11.769 TopStation[2370:207] <null>
2011-05-11 22:27:11.769 TopStation[2370:207] 467 Avenue Henri Mauriat
2011-05-11 22:27:11.769 TopStation[2370:207] Route de Berre - Jas de Bouffan

второй - это проблема, которая возникает позже, когда я пытаюсь нажать на calloutAccessoryControlTapped, поэтому я проверил свою базу данных, и ее адрес - string, а не null. я немного запутался, почему это исключение, хотя все извлекается как String ?? Я также пытался сделать ту же работу, но на стороне сервера, и все в порядке, он не отображает меня NULL, только на стороне iPhone и для этой станции. Если это поможет, адрес станции, из-за которой возникают проблемы: 1 бульвар дю Марешаль Жуан

Ответы [ 2 ]

14 голосов
/ 12 мая 2011

В какой-то момент в вашем коде вы либо вызываете isEqualToString: для объекта, который, по вашему мнению, является строкой NSString, но в действительности является NSNull, либо (что более вероятно) вы передаете NSNull методу / свойству класса где-либочто ожидает NSString.Например, вы можете установить свойство UILabel text со значением annotation.stationAdress.

. Обычно вы должны использовать NSNull только там, где вы не можете использовать nil, например, в NSArray, NSDictionary илилайк.После извлечения значения возможно NSNull из коллекции, вы должны включить такой оператор, чтобы преобразовать его обратно в nil:

    if (value == [NSNull null]) value = nil;
0 голосов
/ 20 октября 2015

Будьте осторожны при работе с табличными представлениями и убедитесь, что вы передаете данные (массив) в источник данных табличного представления и методы делегирования.

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