В качестве альтернативного подхода к общепринятый ответ, вы можете просто изменить ввод от NSNumber * к BOOL в управляемом определения интерфейса объекта, такие как:
@property (nonatomic) BOOL useGPS; // Notice that the 'retain' is also removed as we're now dealing with a scalar rather than an NSObject
Различные альтернативные подходы обсуждаются here, но Chris Hanson «s ответ был наиболее освещающей для меня , особенно:
Если у вас есть числовой атрибут (включая булевой атрибут), что требуется , вы можете просто ввести его в качестве скаляра вместо этого, и ядра данные будут делать правильную вещь:
@property (неатомическую) BOOL isDone;
Даже если атрибут не является обязательным, , который все равно будет работать - это будет только conflate "not present" с "false".
и для более выровненной реализации какао:
Еще одна вещь, которую вы можете сделать это назвать свойство «сделано» и просто указать добытчика как «IsDone.» Это обычное соглашение об именовании какао:
@property (nonatomic, getter = isDone) BOOL done;
Тогда вы можете написать "if (item.done) { ...}" или "item.сделано = NO;»и компилятора будет по-прежнему генерировать -isDone для доступов собственности
Спасибо Крис, и надеюсь, что это поможет кому-то
Заканчивать NSNumber –