बूलियन के लिए उद्देश्य-सी प्रारूपण स्ट्रिंग?


119

बुलियन मूल्यों के लिए किस फॉर्मेटर का उपयोग किया जाता है?

संपादित करें:

उदाहरण: NSLog(@" ??", BOOL_VAL);क्या है ???

जवाबों:


173

इसे करने का एक तरीका स्ट्रिंग्स में बदलना है (क्योंकि केवल दो संभावनाएं हैं, यह कठिन नहीं है):

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

मुझे नहीं लगता कि बुलियन मूल्यों के लिए कोई प्रारूप निर्दिष्ट होता है।


2
आउटपुट स्ट्रिंग्स नहीं होना चाहिए: "हाँ" और "नहीं": P
बेन एस

131
या "केक" और "नो केक"। जो भी आपको सूट करे।
माइकल मायर्स

2
मुझे केक पसंद है और कोई केक नहीं! मैं अपने सभी x को प्रतिस्थापित करने जा रहा हूं; @ "YES": @ "NO" कोड x के साथ? @ "केक": @ "No Cake" तुरंत: D - ठीक है, कम से कम मेरे वस्तु विवरणों के लिए वैसे भी;)
जेसन कोको

8
या TheCakeIsALie और TheCakeIsNotALie।
वॉरेन P

3
% hHD पूर्णांक के रूप में बूलियन मान को 0 या 1 के रूप में प्रदर्शित करने का उचित तरीका है। 0 असत्य है 1 सत्य के लिए है।
Onder OZCAN

69

मैं सलाह दूँगा

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

क्योंकि, उम, BOOLरों कहा जाता है YESया NOऑब्जेक्टिव-सी में।


2
यह एक मैक्रो या फ़ंक्शन के लिए एक स्पष्ट उपयोगिता स्थान लगता है (यदि केवल ऐप में स्ट्रिंग शाब्दिकों के प्रसार से बचने के लिए)।
वॉरेन P

केवल आपको वास्तव में इस तरह के तारों के "प्रसार" से बचने की आवश्यकता नहीं है - जैसे कि ओबीजेसी अपरिवर्तनीय तारों (और अन्य वस्तुओं) के समान-मूल्यवान उदाहरणों को समेटता है - जैसे कि केवल एक प्रति स्मृति में रहती है। मैक्रो ठीक है, फ़ंक्शन ठीक है, और कॉपी-एंड-पेस्ट भी ठीक हैं।
Motti Shneor

52

पूर्णांक फ़ॉर्मेटर का उपयोग करें %d, जो 0या तो प्रिंट करेगा 1:

NSLog(@"%d", myBool);

23

ऑब्जेक्टिव-सी में, BOOLप्रकार केवल एक हस्ताक्षरित चार है। से <objc/objc.h>:

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

तो आप उन्हें %dफ़ॉर्मेटर का उपयोग करके प्रिंट कर सकते हैं लेकिन यह केवल एक 1या एक प्रिंट करेगा 0, YESया नहीं NO

या आप बस एक स्ट्रिंग का उपयोग कर सकते हैं, जैसा कि अन्य उत्तरों में सुझाया गया है।


1
क्या% c, ASCII वर्ण 0 या 1 को मुद्रित करने का प्रयास नहीं करेंगे, जो दोनों नियंत्रण वर्ण हैं?
जेरेमीपीप

21

इस इनलाइन फ़ंक्शन को अपनी .hफ़ाइल में जोड़ें :

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

अब आप जाने के लिए तैयार हैं ...

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

5

NSLog और [NSString stringWithFormat] के साथ उपयोग के लिए प्रारूप के तार यहाँ प्रलेखित हैं:

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

BOOL / बूल / बूलियन का उल्लेख भी नहीं किया गया है ...


यह सेब देव स्थल पर बहुत अच्छी तरह से छिपा हुआ है।
इचिलन

1

बस नीचे फ़ंक्शन जोड़ें और इसे पास करें 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

मेरा मानना ​​है कि ऐसा करने का सबसे आसान तरीका है:

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

@ (अभिव्यक्ति)

गतिशील रूप से बॉक्सिंग अभिव्यक्ति का मूल्यांकन करता है और इसके मूल्य के आधार पर उपयुक्त वस्तु शाब्दिक रिटर्न देता है (यानी एनएसएसट्रिंग फॉर कास्ट चार *, एनएसएनम्बर फॉर इंट, आदि)।


0

मैंने इसके साथ NSString की एक श्रेणी बनाई

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

और इसे इस तरह से उपयोग करें:

[NSString stringWithBool:boolValue];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.