Как проверить ошибки для объекта `null` с помощью интерпретатора`json` в iOS

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

Я столкнулся с null возражать json интерпретатор и думал, что этот код будет проверять ошибки и избежать сбоев. Это не работает, хотя. Мне нужно проверить, чтобы избежать этого сообщения об ошибке и сбоя:

imageurl string is <null>
2013-09-09 12:35:26.928 1000 [1539:690b] -[NSNull length]: unrecognized selector sent to instance

if (![imageUrlString isKindOfClass:[NSNull class]])
{

    imageUrlString = [userImageArray objectAtIndex:indexPath.row];


} else {

    cell.thumbnailImageView.image = [UIImage imageNamed:@"rest.png"];

}

fyi - работает, если строка изображения существует, и происходит сбой только при обнаружении нулевого объекта.

вывод из nslog:

когда встречается нулевой объект: imageurl string is (null)

когда это работает: imageurl string is http://******.com/uploads/users/35/profile.jpeg

Спасибо за помощь

2 ответа

Решение

Это должно сделать свое дело. Не думайте, что ваша проверка на NSNull не является правильной техникой для проверки на ноль. Попробуйте одну из проверок в первом if заявление:

/* Either of these checks in the if statement should work */
if ((NSNull *)imageUrlString != [NSNull null] || [@"<null>" isEqualToString:imageUrlString]) {
    imageUrlString = [userImageArray objectAtIndex:indexPath.row];
} else {
    cell.thumbnailImageView.image = [UIImage imageNamed:@"rest.png"];
}

Это сбой, потому что NSNull не "своего рода класс".

Вам нужно проверить, является ли сам объект нулевым, и, вероятно, хорошей идеей будет проверить, что он тоже не пустой:

if (imageUrlString!=[NSNull null] && [imageUrlString length]>0){
    imageUrlString = [userImageArray objectAtIndex:indexPath.row];
} else {
    cell.thumbnailImageView.image = [UIImage imageNamed:@"rest.png"];
}
Другие вопросы по тегам