2010-04-08 13 views

risposta

156

Un modo per farlo è quello di convertire in stringhe (dato che ci sono solo due possibilità, non è difficile):

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

Io non credo che ci sia un identificatore di formato per i valori booleani.

+1

Le stringhe di uscita non dovrebbero essere: "Sì" e "No": P –

+119

Oppure "Torta" e "Nessuna torta". Qualunque cosa ti si addice. –

+2

Amo la torta e niente torta! Ho intenzione di sostituire tutti i miei x? @ "SÌ": @ "NO" codice con [email protected] "Cake": @ "No Cake" immediatamente: D - beh, almeno per le descrizioni dei miei oggetti comunque;) –

61

Suggerirei

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

perché, ehm, BOOL s sono chiamati YES o NO in Objective-C.

+2

Sembra un ovvio punto di utilità per una macro o una funzione (se non altro per evitare la propagazione di stringhe letterali in tutta l'app). –

+8

-1 per sarcastico "um" – delux247

22

In Objective-C, il tipo BOOL è solo un carattere firmato. Da <objc/objc.h>:

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

modo da poter stampare utilizzando il formattatore %d Ma questo solo stampare un 1 o un 0, non YES o NO.

Oppure puoi semplicemente usare una stringa, come suggerito in altre risposte.

+1

Non tenterà% c di stampare il carattere ASCII 0 o 1 che sono entrambi caratteri di controllo? – JeremyP

+2

Infatti. '% d' dovrebbe essere usato. – mipadi

40

Utilizzare il formattatore intero %d, che la stampa di 0 o 1:

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

xcode si lamenta però. – Fresheyeball

17

Aggiungi questa funzione inline al file .h:

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

Ora si è pronti ad andare ...

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

Basta aggiungere la funzione qui sotto e passare il valore BOOL e metodo restituirà indietro il 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

ho creato una categoria di NSString con questo

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

e usarlo in questo modo:

[NSString stringWithBool:boolValue]; 
Problemi correlati