2010-09-22 11 views
12

¿Puede un NSArray contener una matriz de valores bool?NSArray y bool values ​​

El código siguiente ejecuta

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

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

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

Sin embargo, no consigo un valor de 0 para el NO como se esperaba. En su lugar, esto es lo que me pasa

valor es 37736096

Respuesta

39

Sí, sólo envolver los booleanos en NSNumber:

BOOL b = YES; 

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

Si desea recuperar los valores booleanos, utilice la siguiente:

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

Puede explicar por qué bool NO se convierte en un número grande? Es ese un valor al azar? Gracias. – chenyi1976

+2

Esa es la dirección del objeto NSNumber, en lugar de su contenido. Es porque olvidó llamar a -boolValue –

4

Para completar la respuesta de Philippe, debe hacer uso de litteral string int roduced en XCode 4.4 con el lanzamiento de Apple LLVM Compiler versión 4.0.

Su código se verá así:

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

array[0] = @YES; 

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

... ¿y cuál debería ser el resultado? –

+0

% d formateará la salida en un número para que vea "El valor es 1" – tiguero