web-dev-qa-db-ja.com

ブールのObjective-Cフォーマット文字列?

ブール値にはどのフォーマッタが使用されますか?

編集:

例:NSLog(@" ??", BOOL_VAL);??とは?

114
Moshe

その方法の1つは、文字列に変換することです(2つの可能性しかないため、難しくありません)。

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

ブール値の書式指定子はないと思います。

167
Michael Myers

私がお勧めします

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

なぜなら、Objective-Cでは、BOOLsはYESまたはNOと呼ばれているからです。

68
Yuji

%dまたは0のいずれかを出力する整数フォーマッター1を使用します。

NSLog(@"%d", myBool);
49
Erin Geyer

Objective-Cでは、BOOLタイプは単なる符号付き文字です。 <objc/objc.h>から:

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

したがって、%dフォーマッタを使用して印刷できますが、YESまたはNOではなく、1または0のみが印刷されます。

または、他の回答で提案されているように、単に文字列を使用できます。

23
mipadi

このインライン関数を.hファイルに追加します。

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

これで準備完了です...

NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
19
gigahari

NSLogおよび[NSString stringWithFormat]で使用するフォーマット文字列は次のとおりです。

http://developer.Apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

BOOL/bool/booleanは言及されていません...

5
DLRdave

以下の関数を追加して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
}
1
Bryan Norden

これを行う最も簡単な方法は次のとおりです。

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

@(式)

ボックス化された式を動的に評価し、その値に基づいて適切なオブジェクトリテラルを返します(つまり、const char *のNSString、intのNSNumberなど)。

1
asamoylenko

これでNSStringのカテゴリを作成しました

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

そして、次のように使用します:

[NSString stringWithBool:boolValue];
0
xlsmearlx