2010-04-08 21 views

Respuesta

156

Una forma de hacerlo es convertir a cadenas (ya que sólo hay dos posibilidades, no es difícil):

NSLog(@" %s", BOOL_VAL ? "true" : "false"); 

No creo que hay un especificador de formato para los valores booleanos.

+1

Las cadenas de salida no deberían ser: "Sí" y "No": P –

+119

o "Pastel" y "Sin torta". Lo que te venga bien. –

+2

¡Me encanta el pastel y no el pastel! Voy a reemplazar todo mi x? @ "SÍ": @ "NO" código con [email protected] "Pastel": @ "No pastel" inmediatamente: D - bueno, al menos para mis descripciones de objeto de todos modos;) –

61

recomendaría

NSLog(@"%@", boolValue ? @"YES" : @"NO"); 

porque, um, BOOL s se llaman YES o NO en Objective-C.

+2

Parece un punto de utilidad obvio para una macro o una función (aunque solo sea para evitar la propagación de literales de cadena en toda la aplicación). –

+8

-1 para "um" sarcástico " – delux247

22

En Objective-C, el tipo BOOL es solo un carácter firmado. De <objc/objc.h>:

typedef signed char BOOL; 
#define YES   (BOOL)1 
#define NO   (BOOL)0 

para que pueda imprimir utilizando el formateador %d Pero eso sólo se imprimirá una 1 o una 0, no YES o NO.

O puede simplemente usar una cadena, como se sugiere en otras respuestas.

+1

No% c intentará imprimir el carácter ASCII 0 o 1, que son ambos caracteres de control? – JeremyP

+2

De hecho. '% d' debe ser utilizado. – mipadi

40

Utilice el formateador número entero %d, que imprimirá bien 0 o 1:

NSLog(@"%d", myBool); 
+3

xcode se queja. – Fresheyeball

17

Añadir esta función en línea a su archivo .h:

static inline NSString* NSStringFromBOOL(BOOL aBool) { 
    return aBool? @"YES" : @"NO"; 
} 

Ahora ya está listo para ir ...

NSLog(@"%@", NSStringFromBOOL(BOOL_VAL)); 
0

Simplemente añadir la función de abajo y pasarle el valor y el método BOOL regresará el NSString

- (NSString *)boolValueToString:(BOOL)theBool { 
    if (theBool == 0) 
     return @"NO"; // can change to No, NOOOOO, etc 
    else 
     return @"YES"; // can change to YEAH, Yes, YESSSSS etc 
} 
0

he creado una categoría de NSString con este

+ (instancetype)stringWithBool:(BOOL)boolValue { 
return boolValue ? @"YES" : @"NO"; 
} 

Y utilizar de esta manera:

[NSString stringWithBool:boolValue];