ฟอร์แมตเตอร์ใดที่ใช้สำหรับค่าบูลีน
แก้ไข:
ตัวอย่าง: NSLog(@" ??", BOOL_VAL);
อะไรคือ??
อะไร?
ฟอร์แมตเตอร์ใดที่ใช้สำหรับค่าบูลีน
แก้ไข:
ตัวอย่าง: NSLog(@" ??", BOOL_VAL);
อะไรคือ??
อะไร?
คำตอบ:
วิธีหนึ่งที่ทำได้คือการแปลงเป็นสตริง (เนื่องจากมีเพียงสองความเป็นไปได้จึงไม่ยาก):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
ฉันไม่คิดว่าจะมีตัวระบุรูปแบบสำหรับค่าบูลีน
ฉันจะแนะนำ
NSLog(@"%@", boolValue ? @"YES" : @"NO");
เพราะอืมBOOL
เรียกว่าYES
หรือNO
ใน Objective-C
ใช้ตัวจัดรูปแบบจำนวนเต็ม%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
ฟอร์แมตเตอร์ แต่จะพิมพ์เฉพาะ a 1
หรือ a 0
ไม่ใช่YES
หรือNO
หรือ
หรือคุณสามารถใช้สตริงตามที่แนะนำในคำตอบอื่น ๆ
เพิ่มฟังก์ชันอินไลน์นี้ใน.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));
@ (expression)
ประเมินนิพจน์แบบบรรจุกล่องแบบไดนามิกและส่งคืนอ็อบเจ็กต์ลิเทอรัลที่เหมาะสมตามค่าของมัน (เช่น NSString สำหรับ const char *, NSNumber สำหรับ int เป็นต้น)
ฉันสร้างหมวดหมู่ของ NSString ด้วยสิ่งนี้
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
และใช้มันดังนี้:
[NSString stringWithBool:boolValue];