node ninja
node ninja

Reputation: 32986

NSArray and bool values

Can an NSArray hold an array of bool values?

The following code runs

BOOL b = NO;
NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObject:[NSNumber numberWithBool:b]];

NSLog(@"value is %d", [array objectAtIndex:0] );

However, I don't get a value of 0 for NO as expected. Instead, this is what I get

value is 37736096

Upvotes: 14

Views: 16655

Answers (2)

tiguero
tiguero

Reputation: 11537

To complete Philippe answer, you should make usage of litteral string introduced in XCode 4.4 with the release of Apple LLVM Compiler version 4.0.

Your code will look like this:

NSMutableArray *array = [[NSMutableArray alloc] init];

array[0] = @YES;

//Value is 1
NSLog(@"Value is %d:", [array[0]  boolValue]);

Upvotes: 4

Philippe Leybaert
Philippe Leybaert

Reputation: 171744

Yes, just wrap the booleans in NSNumber:

BOOL b = YES;

[array addObject:[NSNumber numberWithBool:b]];

If you want to retrieve the boolean values, use this:

BOOL b = [[array objectAtIndex:i] boolValue]; 
// only if you know for sure it contains a boolean

Upvotes: 41

Related Questions