ブール値にはどのフォーマッタが使用されますか?
編集:
例:NSLog(@" ??", BOOL_VAL);
、??
とは?
その方法の1つは、文字列に変換することです(2つの可能性しかないため、難しくありません)。
NSLog(@" %s", BOOL_VAL ? "true" : "false");
ブール値の書式指定子はないと思います。
私がお勧めします
NSLog(@"%@", boolValue ? @"YES" : @"NO");
なぜなら、Objective-Cでは、BOOL
sはYES
またはNO
と呼ばれているからです。
%d
または0
のいずれかを出力する整数フォーマッター1
を使用します。
NSLog(@"%d", myBool);
Objective-Cでは、BOOL
タイプは単なる符号付き文字です。 <objc/objc.h>
から:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
したがって、%d
フォーマッタを使用して印刷できますが、YES
またはNO
ではなく、1
または0
のみが印刷されます。
または、他の回答で提案されているように、単に文字列を使用できます。
このインライン関数を.h
ファイルに追加します。
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
これで準備完了です...
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
NSLogおよび[NSString stringWithFormat]で使用するフォーマット文字列は次のとおりです。
BOOL/bool/booleanは言及されていません...
以下の関数を追加してBOOL
値を渡すだけで、メソッドは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
}
これを行う最も簡単な方法は次のとおりです。
NSLog(@" %@", @(BOOL_VAL));
@(式)
ボックス化された式を動的に評価し、その値に基づいて適切なオブジェクトリテラルを返します(つまり、const char *のNSString、intのNSNumberなど)。
これでNSStringのカテゴリを作成しました
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
そして、次のように使用します:
[NSString stringWithBool:boolValue];