Как проверить, не является ли значение в массиве NULL?

Поэтому я разбираю график времени. В ответе JSON есть поле «follow». Это должно быть правдой или ложью.

Но иногда поле отсутствует.

Когда я делаю:

NSLog(@"%@", [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]); 

Это результат:

 1 1 0 0 1 <null> 1 1 

Итак, как проверить эти ценности?

4 Solutions collect form web for “Как проверить, не является ли значение в массиве NULL?”

NSArray и другие коллекции не могут принимать nil как значение, так как nil является «значением дозорного», когда заканчивается сбор. Вы можете найти, если объект имеет значение null, используя:

 if (myObject == [NSNull null]) { // do something because the object is null } 

Если поле отсутствует, NSDictionary -objectForKey: вернет нулевой указатель. Вы можете проверить нулевой указатель следующим образом:

 NSNumber *following = [[[timeline objectAtIndex:i] objectForKey:@"user"] objectForKey:@"following"]; if (following) { NSLog(@"%@", following); } else { // handle no following field NSLog(@"No following field"); } 

Элемент временной шкалы не равен нулю. Это либо «пользовательский» словарь, либо «следующий» объект, который является нулевым. Я рекомендую создать класс модели пользователя, чтобы инкапсулировать часть json / dictionary messiness. На самом деле, я уверен, вы можете найти API-интерфейс Twitter с открытым исходным кодом для iOS.

В любом случае, ваш код будет более читаемым, как что-то вроде:

 TwitterResponse *response = [[TwitterResponse alloc] initWithDictionary:[timeline objectAtIndex:i]]; NSLog(@"%@", response.user.following); 

TwitterResponse выше будет реализовывать свойство readonly TwitterUser *user которое, в свою очередь, будет выполнять NSNumber *following . Использование NSNumber поскольку оно допускает нулевые значения (пустые строки в ответе JSON).

Надеюсь, это поможет вам на правильном пути. Удачи!

для проверки массива, содержащего нулевое значение, используйте этот код.

 if ([array objectAtIndex:0] == [NSNull null]) { //do something } else { } 
  • Как заставить Xcode распознавать пользовательские шаблоны
  • Почему мой объект не отображается, если вершины создаются вручную (malloc'd затем инициализируется), но будет рендерить, если статически назначено?
  • CommonCrypto не создает для arch arm7 iOS
  • Ошибка: «Файл был создан для архива, который не связан с архитектурой (armv7s)»
  • Уведомления iOS Push не работают для специальных распределений с тестовым полетом
  • iOS: MFMailComposeViewController не работает с моделью
  • Не удалось запустить XCTests на устройстве iOS
  • Использование памяти приложений iOS продолжает расти в Xcode
  • didMoveToWindow: Как будет вызван этот метод?
  • iOS Swift Локальное уведомление не «выскакивает»,
  • Xcode Analyzer vs OCLint в 2016 году
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.