Eh bien, pour les entiers, j’utiliserais NSNumber
. Mais OUI et NON ne sont pas des objets, je suppose. Autant que je sache. Je ne peux ajouter que des objets à un NSDictionary
, n'est-ce pas?
Je n'ai pas trouvé de classe d'emballage pour les booléens. Y a-t-il?
Vous utilisez NSNumber.
Il a init ... et nombre ... méthodes qui prennent des booléens, tout comme des entiers, etc.
Depuis le référence de la classe NSNumber :
// Creates and returns an NSNumber object containing a
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value
et:
// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value
et:
// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue
La nouvelle syntaxe depuis Apple LLVM Compiler 4.0
dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;
La syntaxe convertit BOOL
en NSNumber
, ce qui est acceptable pour NSDictionary
.
Si vous le déclarez en tant que littéral et que vous utilisez Clang v3.1 ou une version ultérieure, vous devez utiliser @NO/@YES si vous le déclarez en tant que littéral. Par exemple.
NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;
Pour plus d'informations à ce sujet:
Comme jcampbell1 a souligné, vous pouvez maintenant utiliser la syntaxe littérale pour NSNumbers:
NSDictionary *data = @{
// when you always pass same value
@"someKey" : @YES
// if you want to pass some boolean variable
@"anotherKey" : @(someVariable)
};