मैं एक एनएसडीएल में बूलियन मूल्य कैसे जोड़ सकता हूं?


112

खैर, पूर्णांक के लिए मैं उपयोग करूंगा NSNumber। लेकिन हां और नहीं वस्तुओं नहीं हैं, मुझे लगता है। Afaik मैं केवल एक NSDictionary, सही में वस्तुओं को जोड़ सकता हूं ?

मुझे बूलियन्स के लिए कोई रैपर क्लास नहीं मिली। क्या वहाँ कोई?

जवाबों:


156

आप NSNumber का उपयोग करें।

इसमें init ... और नंबर ... तरीके हैं जो बूलियन्स को लेते हैं, जैसे कि यह पूर्णांक और इतने पर करता है।

से NSNumber वर्ग संदर्भ :

// Creates and returns an NSNumber object containing a 
// given value, treating it as a BOOL.
+ (NSNumber *)numberWithBool:(BOOL)value

तथा:

// Returns an NSNumber object initialized to contain a
// given value, treated as a BOOL.
- (id)initWithBool:(BOOL)value

तथा:

// Returns the receiver’s value as a BOOL.
- (BOOL)boolValue

महान! मुझे लगता है कि आंतरिक रूप से यह बूल को 0/1 के रूप में संग्रहीत करता है?
धन्यवाद

5
@harms सही है। एक उदाहरण के रूप में: NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], @"someKey", nil];
सो ओवर इट

29
यह इंगित करने योग्य है, कि अब NSNumbers के लिए एक शाब्दिक वाक्यविन्यास है। @YESके रूप में ही है[NSNumber numberWithBool:YES]
jcampbell1

51

के बाद से नया वाक्यविन्यास Apple LLVM Compiler 4.0

dictionary[@"key1"] = @(boolValue);
dictionary[@"key2"] = @YES;

वाक्य-विन्यास में परिवर्तित हो BOOLजाता है NSNumber, जो स्वीकार्य है NSDictionary


16

यदि आप इसे शाब्दिक घोषित कर रहे हैं और आप clang v3.1 या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो यदि आप इसे शाब्दिक घोषित कर रहे हैं तो आपको @NO / @ का उपयोग करना चाहिए। उदाहरण के लिए

NSMutableDictionary* foo = [@{ @"key": @NO } mutableCopy];
foo[@"bar"] = @YES;

उस पर अधिक जानकारी के लिए:

http://clang.llvm.org/docs/ObjectiveCLiterals.html


1
कंपाइलर एरर प्राप्त करें: असंगत पॉइंटर टाइप NSMutableDictionary * को इम्प्रूव करने के लिए NS NS टाइप की अभिव्यक्ति के साथ। यदि आप NS ढाँचे के लिए घोषणा को बदलते हैं, तो संकलक त्रुटि प्राप्त करें: शब्दकोश तत्व लिखने की उम्मीद की गई विधि NS ढाँचे की वस्तु पर नहीं मिली *
टोनी

1
शाब्दिक केवल एक बनाएगा NSDictionary, न कि एक NSMutableDictionary। इसलिए यह निर्दिष्ट @YESकरना foo[@"bar"]संभव नहीं है क्योंकि @{ @"key": @NO }पारस्परिक रूप से संभव नहीं है ।
redhotvengeance

3

जैसा कि jcampbell1 ने बताया है, अब आप NSNumbers के लिए शाब्दिक वाक्य रचना का उपयोग कर सकते हैं:

NSDictionary *data = @{
                      // when you always pass same value
                      @"someKey" : @YES
                      // if you want to pass some boolean variable
                      @"anotherKey" : @(someVariable)
                      };

-2

इसे इस्तेमाल करे:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setObject:[NSNumber numberWithBool:TRUE]  forKey:@"Pratik"];
[dic setObject:[NSNumber numberWithBool:FALSE] forKey:@"Sachin"];

if ([dic[@"Pratik"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Pratik'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Pratik'");
}

if ([dic[@"Sachin"] boolValue])
{
    NSLog(@"Boolean is TRUE for 'Sachin'");
}
else
{
    NSLog(@"Boolean is FALSE for 'Sachin'");
}

उत्पादन निम्नानुसार होगा:

बुलियन ' प्रतीक ' के लिए TRUE है

बुलियन 'के लिए FALSE है सचिन ' के


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