112 votes

Comment ajouter une valeur booléenne à un NSDictionary ?

Eh bien, pour les entiers, j'utiliserais NSNumber . Mais OUI et NON ne sont pas des objets, je suppose. A.f.a.i.k. Je ne peux ajouter des objets qu'à un fichier NSDictionary n'est-ce pas ?

Je n'ai pas trouvé de classe enveloppante pour les booléens. En existe-t-il une ?

156voto

harms Points 6348

Vous utilisez NSNumber.

Il possède des méthodes init... et number... qui prennent les booléens, tout comme les entiers et ainsi de suite.

De la 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

50voto

Brian Points 3134

La nouvelle syntaxe depuis Apple LLVM Compiler 4.0

dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;

La syntaxe convertit BOOL a NSNumber qui est acceptable pour NSDictionary .

16voto

sabalaba Points 321

Si vous le déclarez comme un littéral et que vous utilisez clang v3.1 ou supérieur, vous devez utiliser @NO / @YES si vous le déclarez comme un littéral. Par exemple

NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;

Pour plus d'informations à ce sujet :

http://clang.llvm.org/docs/ObjectiveCLiterals.html

3voto

Vojta Points 457

Comme jcampbell1 a souligné, vous pouvez maintenant utiliser la syntaxe littérale pour les NNumbers :

NSDictionary *data = @{
                      // when you always pass same value
                      @"someKey" : @YES
                      // if you want to pass some boolean variable
                      @"anotherKey" : @(someVariable)
                      };

-2voto

NSPratik Points 2728

Essayez ça :

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:[NSNumber numberWithBool:TRUE]  forKey:@"Pratik"];
[dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"Sachin"];

if ([dic[@"Pratik"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Pratik'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Pratik'");
}

if ([dic[@"Sachin"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Sachin'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Sachin'");
}

Le résultat sera le suivant :

Le booléen est VRAI pour Pratik '

Le booléen est FAUX pour Sachin '

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X