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

У меня есть переменная, которая называется «вытягивание» из фида 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"; }, 

Булевы в словаре и другие классы контейнеров инкапсулируются в объекты 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]; } } 
Interesting Posts

Как добавить и получить пользовательские метаданные в видеофайл в программе iOS?

Используя сдерживание контроллера просмотра, дети теряют родительский

tableView.dequeueReusableCellWithIdentifier () заставляет приложение зависать

есть ли способ получить значок значка значка приложения?

Как выбрать заглавные буквы из строки Swift?

Когда методы appdelegate вызываются по отношению к методам жизненного цикла представления вашего исходного контроллера представления?

Приложение разработчика Phonegap застряло в загрузке

Нужен совет с UIBezierPath. Форма треугольника, такая как Instagram Sign Up View

Создание шахматной настольной игры в Sprite Kit с использованием Swift?

Ошибка Facebook при загрузке фотографии в альбом через API-интерфейс графика и iOS: (# 1) Произошла неизвестная ошибка

Будет ли iOS SDK 3.0 iOS работать не на iOS 3.x?

Urban Airship callbackArguments: withOptions: проблема с делегатом

Кадр UITableView, возвращающийся к значению в наконечнике

Почему строки размером менее 1.0pts не отображаются правильно на экранах с сеткой сетчатки?

IOS6.0 UIWebView Схема Tel:

Давайте будем гением компьютера.