2011-01-25 19 views
5

में एक NSNumber तुलना करने के लिए कैसे कैसे करें:एक अगर

if (myNSNumber == 1) 
{ 
... 
} 

यह निर्माण करने के लिए प्रतीत नहीं होता

वस्तु:

+1

शीर्षक सही प्रतीत नहीं होता है। एक एनएसआईएनटेगर परीक्षण संकलित होगा, मुझे लगता है कि आपका मतलब NSNumber है। – jv42

+0

ठीक है आप मेरी apoligies – TheLearner

उत्तर

16

तो myNSNUmberNSNumber है, अपने कोड को पढ़ना चाहिए,

if ([myNSNumber intValue] == 1) { 
    ... 
} 

हैं यह NSInteger है, आप इसकी तुलना सीधे एक पूर्णांक शाब्दिक से कर सकते हैं। क्योंकि NSInteger एक प्रारंभिक डेटा प्रकार है।

if (myNSNumber == 1) { 
    ... 
} 

नोट: करें कि आप अपने घोषणा में * न करना पड़े। आपका NSInteger घोषणाओं, पढ़ना चाहिए

NSInteger myNSNUmber; // RIGHT 
NSInteger *myNSNUmber; // WRONG, NSInteger is not a struct, but it is a primitive data type. 

निम्नलिखित @ BoltClock का जवाब है, जिसमें उन्होंने हाल ही में पोस्ट here


आप (जो है एक NSInteger के लिए सूचक का उपयोग करने की आवश्यकता है लेकिन अगर पर आधारित है, NSInteger *) किसी कारण से, तो आप संकेतक भिन्नता की जरूरत मूल्य प्राप्त करने के:

if (*myNSNUmber == 11) { 
} 

+0

NSNumber एक संरचना है, तो आप इसकी तुलना एक पूर्णांक से नहीं कर सकते हैं। साइमन ने जो पोस्ट किया है वह सही है। –

+0

intValue काम नहीं करता है - मुझे अवैध रिसीवर त्रुटि मिलती है – TheLearner

+0

'myNSNumber' एनएसआईएनटेगर या' एनएसएनंबर' है? यदि यह 'एनएसआईएनटेगर 'है तो सुनिश्चित करें कि आपके पास घोषणा में' * 'नहीं है। – EmptyStack

3

NSInteger सामान्य रूप से तो अपने कोड चाहिए एक सादे पूर्णांक प्रकार है बढ़िया कार्य करना।

अगर myNSNumber एक NSNumber ऑब्जेक्ट (चर नाम का सुझाव के रूप में) तो आप अपने पूर्णांक मान प्राप्त करना चाहिए:

if ([myNSNumber intValue] == 1) 
{ 
... 
} 
संबंधित मुद्दे