IOS проверить, если nsarray == ноль - PullRequest
9 голосов
/ 01 марта 2012

Я получаю ответ от JSON и работает нормально, но мне нужно проверить некоторые null значения,

Я нашел разные ответы, но, кажется, все еще не работает,

NSArray *productIdList = [packItemDictionary objectForKey:@"ProductIdList"];

Я пробовал с

if ( !productIdList.count )  //which breaks the app,

if ( productIdList == [NSNull null] )  // warning: comparison of distinct pointer types (NSArray and NSNull)

Так что же происходит? Как это исправить и проверить null в моем массиве?

Спасибо!

Ответы [ 4 ]

32 голосов
/ 01 марта 2012

Устранить предупреждение, используя приведение:

if (productIdList == (id)[NSNull null])

Если productIdList на самом деле [NSNull null], то выполнение productIdList.count вызовет исключение, поскольку NSNull не понимает сообщение count.

7 голосов
/ 01 марта 2012

Вы также можете проверить класс объекта, используя метод isKindOfClass:.

Например, в вашем случае вы можете сделать следующее:

if ([productIdList isKindOfClass:[NSArray class]])
{
     // value is valid
}

или (если вы уверены, что NSNull указывает недопустимое значение)

if([productIdList isKindOfClass:[NSNull class]])
{
     // value is invalid
}
5 голосов
/ 27 апреля 2012

Вы можете использовать селектор isEqual:

if ( [productIdList isEqual:[NSNull null]] )
0 голосов
/ 01 марта 2012

вам должно быть ясно, что вы хотите проверить: массив равен нулю, что означает, что переменная не существует:


array == nil

Или массив имеет нулевой элемент, который вы можете:


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