Boole için Objective-C biçimlendirme dizesi?


Yanıtlar:


173

Bunu yapmanın bir yolu dizelere dönüştürmektir (yalnızca iki olasılık olduğundan, bu zor değildir):

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

Boole değerleri için bir format tanımlayıcısı olduğunu sanmıyorum.


2
Çıkış dizelerinin "Evet" ve "Hayır" olması gerekmez: P
Ben S

131
Veya "Pasta" ve "Pasta yok". Sana nasıl uyarsa.
Michael Myers

2
Pastayı seviyorum ve pastayı sevmiyorum! Tüm x? @ "EVET": @ "HAYIR" kodumu x? @ "Pasta": @ "Pasta Yok" ile hemen değiştireceğim: D - iyi, en azından nesne açıklamalarım için;)
Jason Coco

8
Veya TheCakeIsALie ve TheCakeIsNotALie.
Warren P

3
% hhd, Boole değerini tamsayı bayrağı olarak 0 veya 1 olarak görüntülemenin uygun yoludur. 0 yanlış 1 doğrudur.
Önder OZCAN

69

Ben tavsiye ederim

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

çünkü, um, BOOLs denir YESveya NOAmaç-C'de.


2
Bir makro veya işlev için bariz bir fayda noktası gibi görünüyor (yalnızca uygulama boyunca dize değişmezlerinin yayılmasını önlemek için).
Warren P

Yalnızca, bu tür dizelerin "yayılmasını" gerçekten önlemenize gerek yoktur - ObjC değişmez dizelerin (ve diğer nesnelerin) aynı değerli örneklerini birleştirdiği için - öyle ki bellekte yalnızca bir kopya bulunur. Makro tamam, işlev tamam ve kopyala ve yapıştır da tamam.
Motti shneor

52

Tamsayı biçimlendirici kullanın %dya yazdırır, 0ya 1:

NSLog(@"%d", myBool);

23

Objective-C'de, BOOLtür yalnızca imzalı bir karakterdir. Kimden <objc/objc.h>:

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

Eğer kullanarak bunları yazdırabilirsiniz Yani %dbiçimlendirici Ama bu sadece bir yazdırır 1veya 0değil YESya NO.

Veya diğer cevaplarda önerildiği gibi sadece bir dizi kullanabilirsiniz.


1
% C, her ikisi de kontrol karakteri olan 0 veya 1 ASCII karakterini yazdırmayı denemeyecek mi?
JeremyP

21

Bu satır içi işlevi .hdosyanıza ekleyin :

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

Artık gitmeye hazırsınız ...

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


1

Sadece aşağıdaki işlevi ekleyin ve BOOLdeğeri iletin; yöntem,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

Bunu yapmanın en kolay yolunun:

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

@ (İfade)

Kutulu ifadeyi dinamik olarak değerlendirir ve değerine bağlı olarak uygun nesne hazır bilgisini döndürür (örn. Const char * için NSString, int için NSNumber, vb.).


0

Bununla bir NSString kategorisi oluşturdum

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

Ve bunu şu şekilde kullanın:

[NSString stringWithBool:boolValue];
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.