2010-04-08 8 views

Antwort

156

Eine Möglichkeit, es zu tun ist, um Zeichenfolgen zu konvertieren (da es nur zwei Möglichkeiten gibt, ist es nicht schwer):

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

Ich glaube nicht, gibt es eine Formatangabe für Boolesche Werte.

+1

Sollen die Ausgabezeichenfolgen nicht sein: "Ja" und "Nein": P –

+119

Oder "Kuchen" und "Kein Kuchen". Was immer dir passt. –

+2

Ich liebe Kuchen und keinen Kuchen! Ich werde alle meine x ersetzen @ "YES": @ "NO" -Code mit [email protected] "Cake": @ "No Cake" sofort: D - na ja, zumindest für meine Objektbeschreibungen trotzdem;) –

61

würde ich

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

weil, äh, BOOL s genannt werden YES oder NO in Objective-C empfehlen.

+2

Es scheint ein offensichtlicher Utility-Spot für ein Makro oder eine Funktion (wenn auch nur um die Ausbreitung von String-Literalen in der gesamten App zu vermeiden). –

+8

-1 für sarkastisches "um" – delux247

22

In Objective-C ist der Typ BOOL nur ein signiertes Zeichen. Von <objc/objc.h>:

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

So können Sie sie mit dem %d Formatierer drucken Aber das wird nur ein 1 oder eine 0, nicht YES oder NO drucken.

Oder Sie können einfach eine Zeichenfolge verwenden, wie in anderen Antworten vorgeschlagen.

+1

Wird% c nicht versuchen, das ASCII-Zeichen 0 oder 1 zu drucken, die beide Steuerzeichen sind? – JeremyP

+2

In der Tat. '% d' sollte verwendet werden. – mipadi

40

Verwenden integer Formatierer %d, welche druckt entweder 0 oder 1:

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

xcode klagt aber. – Fresheyeball

17

Fügen Sie diese Inline-Funktion auf Ihre .h Datei:

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

Jetzt sind Sie bereit zu gehen ...

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

Sie einfach die unten Funktion hinzufügen und den BOOL Wert und das Verfahren wieder zurück übergeben wird die 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

habe ich eine Kategorie von NSString mit diesem

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

Und es wie folgt verwenden:

[NSString stringWithBool:boolValue]; 
Verwandte Themen