Эвристика Объектно-ориентированного проектирования является большим чтением. Я не мог подавить его.
-valueForKey: всегда возвращает объект. id
- это тип target-c для указателя на любой объект.
Вы можете проверить объект в отладчике. Некоторые полезные команды:
po value
po [value class]
Вы обнаружите, что значение на самом деле является NSNumber, поэтому можете отправить ему сообщение -boolValue
, чтобы получить интересующий вас флаг BOOL.
Если значение ключа - BOOL, то возвращаемый объект будет NSNumber. Вы можете просто попросить у него boolValue
. Вы не можете просто привести объект ( id
) к BOOL, целочисленному или любому другому не объектному типу. Механизм KVC автоматически помещает скаляры в соответствующий тип значения, поэтому вы можете просто запросить у него нужный тип. Возможно, вас заинтересуют документы KVC - они объясняют это более подробно.