Непризнанная ошибка выбора boolForKey iOS

Я читаю из файла plist в массив. Когда я перебираю массив, я сохраняю каждую строку в соответствующей части структуры данных. Когда я перехожу к переменной BOOL и попробую boolForKey извлечь ее из массива, я получаю недопустимую ошибку селектора.

Вот какой код:

for(int i = 0; i<myArray.count;i++){ [myDataStructure setName:[[myArray objectAtIndex:i] objectForKey:NAMEVAR_KEY]]; //works fine .... [myDataStructure setABoolVar:[[myArray objectAtIndex:i] boolForKey:BOOLVAR_KEY]]; //crash .... } 

Свойства в структуре данных выглядят следующим образом: @property (неатомное, сильное) NSString * name; @property (неатомный) BOOL aBoolVar;

 //synthesized etc.... 

В plist свойство указано как Boolen, если я использую objectForKey, я получаю предупреждение, но оно не падает.

Есть идеи?

Это XML

 <dict> <key>Root</key> <array> <dict> <key>name</key> <string>Bobby</string> <key>aBoolValue</key> <true/> </dict> .... </array> </dict> 

….

С консоли

 2012-02-16 23:45:21.866 CSOTest4[1452:f803] -[__NSCFDictionary boolForKey:]: unrecognized selector sent to instance 0x6d296a0 2012-02-16 23:45:21.867 CSOTest4[1452:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary boolForKey:]: unrecognized selector sent to instance 0x6d296a0' *** First throw call stack: (0x13c2052 0x1553d0a 0x13c3ced 0x1328f00 0x1328ce2 0x3980 0xdf64e 0xdec1c 0x10556d 0xefd47 0x106441 0x10645d 0x10645d 0x1064f9 0x46d65 0x46dac 0x17be6 0x188a6 0x27743 0x281f8 0x1baa9 0x12acfa9 0x13961c5 0x12fb022 0x12f990a 0x12f8db4 0x12f8ccb 0x182a7 0x19a9b 0x2618 0x2575 0x1) 

NSDictionary не имеет метода boolForKey . objectForKey вы должны использовать objectForKey , который даст вам NSNumber, а затем вызовите boolValue в NSNumber.

 BOOL myBool = [[[myArray objectAtIndex:i] objectForKey:BOOLVAR_KEY] boolValue]; 

или разбить его на кусочки:

 NSDictionary myDictionary = [myArray objectAtIndex:i]; NSNumber myNumber = [myDictionary objectForKey:BOOLVAR_KEY]; BOOL myBool = [myNumber boolValue]; 

Должно ли ваше логическое значение в вашем PLIST быть YES, а не True?

Это работает

 [myDataStructure setABoolVar:([(NSDictionary*) [myArray objectAtIndex:i]valueForKey:BOOLVAR_KEY]== [NSNumber numberWithBool:YES]?YES:NO)]; 
Interesting Posts

Что делает оператор -> в -copyWithZone :?

Экспорт и импорт подписей и предварительных профилей с одного мака на другой

Исключение iOS

UIView: авторезистировать все, кроме одного подвью – iOS

Как изменить рамку клавиатуры в ответ на событие прокрутки, например, приложение SMS в iOS5?

Проверьте Objective-C String для определенных символов

3.1. Мы заметили, что ваше приложение содержит нерелевантную информацию о платформе. Ссылка на сторонние платформы в приложении или на его

MKMapKit UILabel в качестве аннотации

Как получить доступ к последнему локальному уведомлению, если пользователь проигнорировал последнее предупреждение на ios?

как получить имя группы друзей Facebook?

Как загрузить и установить UIImage не в основной поток

SKVideoNode только рендеринг в SCNScene при перемещении узла или камеры

Skype push-уведомление « звонит …» исчезает, когда заканчивается вызов – как это сделать?

Как изменить цвет фона UITextField на пользовательский цвет градиента в iOS с помощью Swift

iOS – текущее расширение «показывать больше» и «показывать меньше» неверно. Collapsed говорит, что «показывать меньше» – требуется многопользовательская печать для исправления

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