2013-08-09 2 views
-1

Что я могу сделать, чтобы избежать сбоя приложения, когда оно встречает нулевое значение?Что я могу сделать, чтобы избежать сбоя приложения, когда оно встречает нулевое значение?

сообщение об ошибке я получаю:

-[NSNull isEqualToString:]: unrecognized selector sent to instance. 

Я попытался это условный оператор, чтобы проверить нулевое значение, но она по-прежнему падает. listingWebAddress - NSString.

if (listingWebAddress == nil) 
    { 
     [webLabel setText:@""]; 

    } else { 

    [webLabel setText:listingWebAddress]; 

    } 

всякий раз, когда существует "listingWebAddress".

спасибо за помощь :)

Update:

благодаря ответу тигра код теперь работает. Решение было:

if (![listingWebAddress isKindOfClass:[NSNull class]]) 
    { 
     // do your task here 

     [webLabel setText:listingWebAddress]; 

    } else { 

     [webLabel setText:@"no web url"]; 

    } 
+0

@Kerni Как насчет ответа на вопрос, а не на спам? NSNull - довольно распространенная проблема, особенно когда речь заходит о JSON, возвращенных из API. – thedp

ответ

1

1. Если NSString вы можете проверить его длину и если это NSArray вы проверить его количество.

2. Вы можете просто положить его в состоянии, если условие будет возвращать YES только в случае, если объект не ноль. Пример:

if (object) 
{ 
    //do your task here 
} 

3. В Objective-C Вы можете проверить его по классу.

if (![object isKindOfClass:[NSNull class]]) 
{ 
    // do your task here 
} 

Класс NSNull определяет одноплодной объект, используемый для представления нулевых значений в объектах сбора (которые не позволяют нулевые значения).

+0

спасибо! это NSString. Я обновил свой код выше и избавился от mutableCopy. Затем я попытался, если (listingWebAddress) { [webLabel setText: listingWebAddress]; } но он по-прежнему сбой - [NSNull isEqualToString:]: непризнанный селектор отправлен в экземпляр – hanumanDev

+0

Конечно, вы вызываете метод 'isEqualToString:' объектом 'NSNull', тогда как он используется для объекта' NSString'. Вы проверили его класс с помощью '[listingWebAddress: isKindOfClass: [NSNull class]]'? – TheTiger

+0

, который сработал! большое спасибо! это становилось раздражающим: D если (![listingWebAddress isKindOfClass: [NSNull class]]) { // сделайте свою задачу здесь [webLabel setText: listingWebAddress]; } else { [webLabel setText: @ "no web url"]; } – hanumanDev

0

Похоже listingWebAddress уже NSNull, который не поддерживает метод mutableCopy. Я хотел бы изменить условие:

if ([listingWebAddress isKindOfClass: [NSNull class]] == NO){ 
    ... rest of logic 
} 
0

попробовать этот

if(listingWebAddress !=[NSNull null] 
{ 
    //your code 
}