Причина, по которой условный блок никогда не вводится, заключается в том, что -valueForKey: возвращает id
, то есть указатель. Однако вы используете его, как если бы это был BOOL, поэтому единственный способ войти в этот блок - if -valueForKey: возвращает nil.
Ваш оператор журнала печатает «0» в качестве значения, потому что вы использовали спецификатор формата объекта, %@
, который ожидает указатель и печатает описание объекта, на который указывает указатель. Вы, вероятно, присваиваете ему NSNumber *, и он правильно печатает значение, представленное этим объектом.
Предыдущие два ответа верны, указав, что вы должны использовать метод -boolValue, чтобы получить значение BOOL из номера NSNumber, полученного из -valueForKey:.