私はこのようなことをしたい:
NSLog(@"You got: %x", booleanValue);
ここで、xは指定子です。しかし、私はそれを見つけることができません!避けたい:
if (booleanValue) {
NSLog(@"You got: YES");
}
else {
NSLog(@"You got: NO");
}
何か案は?ドキュメントにはブール指定子がありませんでした。 %@
どちらも機能しませんでした。
私はこのようなことをしたい:
NSLog(@"You got: %x", booleanValue);
ここで、xは指定子です。しかし、私はそれを見つけることができません!避けたい:
if (booleanValue) {
NSLog(@"You got: YES");
}
else {
NSLog(@"You got: NO");
}
何か案は?ドキュメントにはブール指定子がありませんでした。 %@
どちらも機能しませんでした。
動作するものは次の2つです。
NSLog(@"You got: %@",booleanValue ? @"YES" : @"NO");
またはキャストできます:
NSLog(@"You got: %d", (int)booleanValue);
0または1を出力します
あなたはそれをintにキャストして使用することができます%d
:
NSLog(@"You got: %d", (int)booleanValue);
または、次のようなものを使用します。
NSLog(@"You got: %@", booleanValue ? @"YES" : @"NO");
私が知っているフォーマット指定子はありません。あなたはこれを行うことができます:
NSLog(@"You got: %@", (booleanValue ? @"YES" : @"NO"));
または、BOOLを受け取り、適切な文字列を返す上記のロジックを使用して、小さな関数またはマクロを作成することもできます。その後、ログステートメントでその関数を使用できます。
os_log
使用する
os_log("results in true/false: %{bool}d", myBool)
os_log("results in YES/NO: %{BOOL}d", myBool)
最新のOSを使用している場合は、文字列補間を使用することもできます。詳細については、メッセージ文字列のカスタム値のフォーマットを参照してください。
@MottiShneorが指摘したように、os_log(3)
manページにはより詳細なリストがあります。
Value type Custom specifier Example output
-----------------------------------------------------------------------------
BOOL %{BOOL}d YES
bool %{bool}d true
darwin.errno %{darwin.errno}d [32: Broken pipe]
darwin.mode %{darwin.mode}d drwxr-xr-x
darwin.signal %{darwin.signal}d [sigsegv: Segmentation Fault]
time_t %{time_t}d 2016-01-12 19:41:37
timeval %{timeval}.*P 2016-01-12 19:41:37.774236
timespec %{timespec}.*P 2016-01-12 19:41:37.2382382823
bitrate %{bitrate}d 123 kbps
iec-bitrate %{iec-bitrate}d 118 Kibps
uuid_t %{uuid_t}.16P 10742E39-0657-41F8-AB99-878C5EC2DCAA
sockaddr %{network:sockaddr}.*P fe80::f:86ff:fee9:5c16
in_addr %{network:in_addr}d 127.0.0.1
in6_addr %{network:in6_addr}.16P fe80::f:86ff:fee9:5c16
でSwift
、を使用しますString(describing: booleanValue)
例えば:os_log("You got %@", log: .default, type: .debug, String(describing: booleanValue))
はい
コードは次のとおりです。
NSLog(@"%hhd",BOOLvariable);
はいの場合は1、いいえの場合は0を出力します。
もちろん、直接ブールフォーマット指定子%xを使用できます
BOOL flag = YES;
NSLog(@"You got: %x", flag);
ただし、少なくとも、NSNumberオブジェクトは常に信頼できます。このオブジェクトは、「ボックス化されたデータのタイプ」を覚えているため、このNSLogも正常に機能します。
NSLog(@"You got %@", flag? @YES : @NO);
文字列ではなく、NSNumberリテラルの使用に注意してください。