проверка логического значения из словаря.

У меня есть переменная, которая называется «вытягивание» из фида JSON. После проверки типа класса объект интерпретируется как I NSLog:

attending var type is: __NSCFBoolean 

Это делается с помощью [varname class], чтобы получить тип класса переменной.

Поэтому я хочу посмотреть, правда ли это или ложно …. поэтому я пишу этот код ..:

 if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

Однако я не могу скомпилировать его, потому что он дает мне желтую текстовую ошибку, говоря об этом:

введите описание изображения здесь

Что я делаю не так? Как я могу это исправить. Просто добавить данные в фид выглядит следующим образом:

  { attendees = ( ); attending = 1; date = "2012-09-24 09:11:00"; id = 504; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, { attendees = ( ); attending = 1; date = "2012-09-24 09:11:00"; id = 503; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, { attendees = ( ); attending = 0; date = "2012-09-24 09:11:00"; id = 508; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, { attendees = ( ); attending = 1; date = "2012-09-24 09:11:00"; id = 509; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, { attendees = ( ); attending = 0; date = "2012-09-24 09:11:00"; id = 505; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, { attendees = ( ); attending = 1; date = "2012-09-24 09:11:00"; id = 506; lessonHTML = "somehtml."; name = "Sup"; youtubeId = "http://www.youtube.com/watch?v=j1vb4cND3G0"; }, 

2 Solutions collect form web for “проверка логического значения из словаря.”

Булевы в словаре и другие классы контейнеров инкапсулируются в объекты NSNumber (дополнительную информацию см. NSNumber документации NSNumber )

Чтобы извлечь значение, необходимо отправить сообщение boolValue объекту, полученному из словаря, и сравнить его с YES / NO:

 NSNumber* attendingObject = [[events objectAtIndex:indexPath.row] objectForKey:@"attending"]; if ([attendingObject boolValue] == YES) { ... } 

Подробнее о значениях и способах их инкапсулирования. Я собираю классы в документации Apple.

тип « BOOL » не является объектом Objective C, а вместо него является стилем типа C.

Он хранится в словаре как объект NSNumber .

Итак, что вам нужно сделать, а не:

 if([[_events objectAtIndex:indexPath.row] objectForKey:@"attending"] == YES){ 

что-то вроде этого:

 BOOL attending = NO; // assume NO to start with NSDictionary * lessonDictionary = [_events objectAtIndex: indexPath.row]; if(lessonDictionary) { NSNumber * attendingObject = [lessonDictionary objectForKey: @"attending"]; if(attendingObject) { attending = [attendingObject boolValue]; } } 
  • Если «Идентификатор специальных возможностей» предназначен для тестов автоматизации UI, почему он включен в локализованные ресурсы?
  • UIViewControllerHierarchyInconsistency при попытке представить контроллер модального представления
  • Ошибка Xcode: «_main», на которую ссылаются: неявный ввод / запуск для основного исполняемого файла
  • iOS Ошибка памяти AdMob?
  • Xcode6: запустить два экземпляра симулятора
  • Поддержка GCM для приложения ios при применении в фоновом режиме или
  • Проблема с песочницей приложения App Purchase
  • Как установить iOS 7 и последующие симуляторы в Xcode 7 Beta 5?
  • Xcode 9 iOS Simulator - невозможно получить действительную ручку процесса
  • Невозможно получить данные с использованием данных ядра
  • toSharedViewController не повторяет использование существующего контроллера
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.