2011-11-11 13 views
13

मैं इस प्रकार किसी नक्शे में एक बूलियन डेटाबेस मूल्य को बचाने के लिए कोशिश कर रहा हूँ में एक (BOOL *) सम्मिलित करने के लिए -कैसे NSMutableDictionary

[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]]; 

यह मुझे कह रही है "असंगत सूचक BOOL भेजने रूपांतरण पूर्णांक एक त्रुटि देता है * उर्फ हस्ताक्षर चार * से 'बूल' उर्फ ​​हस्ताक्षर किए गए चार "

मैं शब्दकोश में एक BOOL * कैसे सम्मिलित करूं? एक NSNumber में

+0

'-इससेट '' BOOL' के बजाय 'BOOL *' क्यों लौटाता है? –

उत्तर

41

लपेटें BOOL:

NSNumber *boolNumber = [NSNumber numberWithBool:YES]; 

यह बाहर निकलने के लिए:

BOOL b = [boolNumber boolValue]; 

आप एक NSValue में (जैसे एक सूचक या एक struct के रूप में) अन्य गैर वस्तु प्रकार लपेट कर सकते हैं ।


संपादित करें: मान लिया जाये कि आप वास्तव में मतलब एक BOOL * (सूचक):

NSValue *boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)]; 
BOOL *b = [boolValue pointerValue]; 
+0

जैसा कि आप मेरे प्रश्न में देख सकते हैं मैं पहले से ही ऐसा कर रहा हूं लेकिन यह मेरे लिए काम नहीं कर रहा है। यही वह समय है जब मुझे त्रुटि मिली है जिसका मैंने उल्लेख किया है। – Suchi

+0

क्या आप निश्चित हैं कि '[एक संदेश isSet] 'एक बूल लौटा रहा है, न कि BOOL *? यदि यह उत्तरार्द्ध लौटाता है, तो आपको '[NSNumber numberWithBool: * [aMessage isSet]] '(हालांकि आपको पहले यह जांचना चाहिए कि यह पूर्ण नहीं है) का उपयोग करने की आवश्यकता है। – titaniumdecoy

+2

क्लैंग v3.1 से शुरू होने पर, हम शाब्दिक उपयोग कर सकते हैं: 'NSNumber * yesNumber = @YES;' और 'NSNumber * noNumber = @NO;', '[NSNumber numberWithBool: YES]' के बराबर। – coco

0

आपका isSet विधि निम्नलिखित हस्ताक्षर करने की आवश्यकता होगी: - (BOOL)isSet;

यह मानते हुए कि ऐसा है, तो टाइटेनियमडेको द्वारा वर्णित NSNumber का उपयोग करके कोई समस्या नहीं होनी चाहिए।

आपकी आखिरी वाक्य मुझे चिंतित करती है, BOOL *। निश्चित रूप से आपका मतलब BOOL है, यदि आप बिल्कुल को एक बूलियन संदर्भ की आवश्यकता है, तो मैं सुझाव दूंगा कि आप एनएसएनंबर में प्रारंभिक/वास्तविक बूल स्टोर करें और जहां भी आपको इसकी आवश्यकता होगी वहां संदर्भों को संग्रहीत करें (यानी आपका एनएसएमयूटेबल डिक्शनरी)।

संबंधित मुद्दे