Использование:
BOOL isTrue = [[someDict objectForKey:@"isTrue"] boolValue];
Единственный способ сохранить BOOL
в NSDictionary
- это поместить его в NSNumber
объект. BOOL
является примитивным, а словарь содержит только объекты.
Аналогично, чтобы сохранить BOOL
в словаре, используйте:
[someDict setObject:[NSNumber numberWithBool:isTrue] forKey:@"isTrue"];
РЕДАКТИРОВАТЬ: (в ответ на комментарий)
Есть два способа представить это как @property
. Один - объявить ивар как BOOL
, а другой - объявить его как NSNumber
.
Для первого случая, ivar: BOOL isTrue;
, а свойство @property BOOL isTrue;
(очевидно, я игнорирую соглашения об именах).
Для NSNumber
значение ивара: NSNumber * isTrue;
и свойство @property (nonatomic, retain) NSNumber * isTrue;
. Если вы пойдете по этому маршруту, вы можете захотеть предоставить второй метод установки (setIsTrueBool
или что-то в этом роде), который позволит вам просто передать YES
или NO
, а затем вы сами выполните бокс. В противном случае любой, кто это сделает, должен сам заниматься боксом.
Лично я бы, скорее всего, выбрал вариант № 1, но это действительно зависит от цели класса.