NO
определяется как 0 (хотя в современных системах он попадает туда через __objc_no
, это все равно 0 в этом контексте). Вы не можете поместить это в NSDictionary. Если бы вы это сделали, это было бы то же самое, что и nil
, и действовало бы как удаление ключа.
Я подозреваю, что на самом деле это @NO
, который является NSNumber-версией значения и является объектом (так можно положить в NSDictionary). (Я подозреваю это, потому что у вас также есть []
в вашем словаре, что также невозможно в NSDictionary
. Поскольку NO также недействительно JSON, я не думаю, что вы показываете нам реальные данные. )
Если self.enabled
является BOOL, то когда вы извлекаете objectForKey:
, он возвращает объект и пытается присвоить значение BOOL. Вероятно, объект является теговым указателем, но его общее значение, вероятно, ненулевое. Ненулевые значения являются истинными.
Однако в этом случае я бы ожидал предупреждения. Вы разрешили все предупреждения в этом проекте?