Utilisation:
BOOL isTrue = [[someDict objectForKey:@"isTrue"] boolValue];
La seule façon de stocker un BOOL
dans un NSDictionary
est à elle dans la boîte un objet NSNumber
. Un BOOL
est primitif et un dictionnaire ne contient que des objets.
De même, pour stocker un BOOL
dans un dictionnaire, utilisez:
[someDict setObject:[NSNumber numberWithBool:isTrue] forKey:@"isTrue"];
EDIT: (en réponse à un commentaire)
Il y a deux façons de représenter cela comme une @property
. L'un est de déclarer l'ivar comme BOOL
, et l'autre est de le déclarer comme NSNumber
.
Pour le premier cas, l'ivar est: BOOL isTrue;
et la propriété est @property BOOL isTrue;
(j'ignore les conventions de dénomination, évidemment). Pour la NSNumber
, l'ivar est: NSNumber * isTrue;
et la propriété est @property (nonatomic, retain) NSNumber * isTrue;
. Si vous allez avec cette route, vous pouvez vouloir fournir une seconde méthode de setter (setIsTrueBool
ou quelque chose) qui vous permet de simplement passer en YES
ou NO
, et ensuite vous faites la boxe vous-même. Sinon, toute personne qui appelle cela devrait faire la boxe elle-même.
Personnellement, je serais très probablement aller avec l'option n ° 1, mais cela dépend vraiment de ce que l'objectif de la classe était.
à quoi ressemblerait le @property? J'ai @property (nonatomic, assign) BOOL isTrue; –
@LB - réponse éditée. –