Chuỗi định dạng Objective-C cho boolean?


Câu trả lời:


173

Một cách để làm điều đó là chuyển đổi thành chuỗi (vì chỉ có hai khả năng nên không khó):

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

Tôi không nghĩ rằng có một công cụ định dạng cho các giá trị boolean.


2
Chuỗi đầu ra không nên là: "Có" và "Không": P
Ben S

131
Hoặc "Bánh" và "Không bánh". Dù phù hợp với bạn.
Michael Myers

2
Tôi yêu bánh và không có bánh! Tôi sẽ thay thế tất cả mã x? @ "YES": @ "NO" của mình bằng x? @ "Cake": @ "No Cake" ngay lập tức: D - à, dù sao thì, ít nhất là đối với mô tả đối tượng của tôi;)
Jason Coco

8
Hoặc TheCakeIsALie và TheCakeIsNotALie.
Warren P

3
% hhd là cách thích hợp để hiển thị giá trị Boolean dưới dạng cờ số nguyên là 0 hoặc 1. 0 là sai 1 là đúng.
Onder OZCAN

69

Tôi muốn giới thiệu

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

bởi vì, ô, BOOLs được gọi YEShoặc NOtrong Objective-C.


2
Nó dường như là một vị trí tiện ích rõ ràng cho một macro hoặc một hàm (nếu chỉ để tránh sự lan truyền các ký tự chuỗi trong ứng dụng).
Warren P

Chỉ có điều bạn không thực sự cần phải tránh "sự lan truyền" của các chuỗi như vậy - vì ObjC gọi các trường hợp có cùng giá trị của chuỗi bất biến (và các đối tượng khác) - sao cho chỉ có một bản sao nằm trong bộ nhớ. Macro là OK, chức năng là OK và sao chép và dán cũng OK.
Motti Shneor

52

Sử dụng bộ định dạng số nguyên %d, sẽ in một trong hai 0hoặc 1:

NSLog(@"%d", myBool);

23

Trong Objective-C, BOOLkiểu chỉ là một ký tự có dấu. Từ <objc/objc.h>:

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

Vì vậy, bạn có thể in chúng bằng cách sử dụng bộ %dđịnh dạng Nhưng điều đó sẽ chỉ in a 1hoặc a 0, không YEShoặc NO.

Hoặc bạn có thể chỉ sử dụng một chuỗi, như được đề xuất trong các câu trả lời khác.


1
Sẽ% c cố in ký tự ASCII 0 hoặc 1 cả hai đều là ký tự điều khiển?
JeremyP

21

Thêm hàm nội tuyến này vào .htệp của bạn :

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

Bây giờ bạn đã sẵn sàng để đi ...

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


1

Chỉ cần thêm hàm dưới đây và chuyển cho nó BOOLgiá trị và phương thức sẽ trả về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

Tôi tin rằng cách dễ nhất để làm điều này là:

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

@(biểu hiện)

Tự động đánh giá biểu thức được đóng hộp và trả về đối tượng phù hợp theo nghĩa đen dựa trên giá trị của nó (tức là NSString cho const char *, NSNumber cho int, v.v.).


0

Tôi đã tạo một danh mục NSString với cái này

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

Và sử dụng nó như thế này:

[NSString stringWithBool:boolValue];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.