2011-01-06 10 views
11

मेरे पास एक लाइब्रेरी है जहां मुझे एनएससीओन्त्र वैल्यू मिल रही है और मुझे नहीं पता कि इससे कैसे निपटें। मुझे पता है कि मुझे प्राप्त करने वाला ऑब्जेक्ट एक बुलियन है, तो मैं वास्तविक मूल्य कैसे निकालूं?एनएससीओन्त्र वैल्यू क्या है और मैं इसका मूल्य कैसे निकालूं?

+1

कैसे आप जानते हैं कि आप NSConcreteValue मिलता है? इस लिंक के मुताबिक http://lists.apple.com/archives/cocoa-dev/2003/Oct/msg00096.html जो NSValue क्लास का निजी उप-वर्ग हो सकता है। इसे जांचने का प्रयास करें (जैसा कि लिंक में वर्णित है)। एनएसएलओजी (@ "% s", [yourConcreteValue objCType] को लॉग इन करने का प्रयास करें) यह देखने के लिए कि उस ऑब्जेक्ट में वास्तव में किस प्रकार संग्रहीत किया गया है – Vladimir

उत्तर

12

यह एक निजी वर्ग है जो कभी-कभी (या हर बार?) दृश्यों के पीछे उपयोग किया जाता है जब आप NSValue के साथ काम करते हैं। या कम से कम यह मेरी धारणा है। मुझे लगता है कि आप NSValue को कास्ट करने के लिए सक्षम होना चाहिए:

// assuming value is of type “id” 
NSAssert([value isKindOfClass:[NSValue class]], 
    @"Sorry, I was wrong. Maybe try anyway?"); 
NSAssert(strcmp(@encode(BOOL), [value objCType]) == 0, 
    @"The value does not seem to hold a BOOL."); 
BOOL unwrappedValue; 
[value getValue:&unwrappedValue]; 

... या ऐसा ही कुछ है, मैं इस ऊपर बना रही हूँ :-)

+0

कक्षा और मान प्रकार को सत्यापित करने के लिए NSAssert का उपयोग करने के महान उदाहरण +1 करें। (यद्यपि संभवतः 'NSValue' में कलाकारों को करने की आवश्यकता नहीं है - बस '-getValue: ') –

+0

का उपयोग करें, आप सही हैं, मुझे यकीन है कि उन्हें' NSConcreteValue' के रूप में मान नहीं मिल रहा है। अधिक संभावना है कि उसे किसी संग्रह या किसी चीज़ से 'आईडी' प्राप्त हो, मैं जवाब संपादित करूंगा। – zoul

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