2012-02-28 18 views
6

हम दो एनएसआईएनटेगर संख्याओं की तुलना कैसे करते हैं? मेरे पास दो एनएसआईएनटेजर्स हैं और उन्हें नियमित तरीके से तुलना करना काम नहीं कर रहा था।दो एनएसआईएनटेगर की तुलना कैसे करें?

if (NSIntegerNumber1 >= NSIntegerNumber2) { 
    //do something 
} 

Eventhough, पहले मूल्य 13 था और दूसरा मूल्य 17 वर्ष के थे, अगर पाश

किसी भी विचार को क्रियान्वित किया जाता है?

+1

है यही कारण है कि तुम कैसे करते। अपने मूल्यों को दोबारा जांचें: 'if' से पहले ब्रेकपॉइंट सेट करें और सुनिश्चित करें कि वे आपकी अपेक्षा करते हैं। –

+0

एनएसआईएनटेगर int के लिए एलिस है। तो यह काम करना चाहिए। अन्य बुद्धिमान प्रकार NSIntegerNumber1 चर निर्दिष्ट करें .. –

+0

क्या आप वाकई एनएसआईएनटेगर संख्याएं हैं? मेरा अनुमान है कि ये NSNumbers हैं और आप पॉइंटर्स की तुलना करने की कोशिश कर रहे हैं। – SVGreg

उत्तर

9
NSInteger int1; 
NSInteger int2; 

int1 = 13; 
int2 = 17; 

if (int1 > int2) 
{ 
    NSLog(@"works"); 
} 
11

ठीक है, क्योंकि आपके पास नाम में पूर्णांक और संख्या है, इसलिए आपने एनएसआईएनटेगर के बजाय एनएसएनंबर के रूप में दो मान घोषित किए होंगे। यदि ऐसा है, तो आपको निम्न कार्य करने की आवश्यकता है:

if ([NSIntegerNumber1 intValue] >= [NSIntegerNumber2 intValue]) { 
     // do something 
} 

अन्यथा इसे काम करना चाहिए!

7

NSInteger एक अंतर्निहित अभिन्न प्रकार (उदा। int या long) के लिए सिर्फ एक टाइपिफ़ है।

a == b का उपयोग करके तुलना करना सुरक्षित है।

अन्य आम ऑपरेटर अनुमानित व्यवहार करते हैं: !=, <=, <, >= et al।

अंत में, NSInteger का अंतर्निहित प्रकार प्लेटफ़ॉर्म/आर्किटेक्चर द्वारा भिन्न होता है। यह मानना ​​सुरक्षित नहीं है कि यह हमेशा 32 या 64 बिट होगा।

+0

इसे मतदान किया जाना चाहिए, क्योंकि यह तर्क बताता है –

2

जब पूर्णांक की तुलना, इस का उपयोग करते हुए, ठीक काम करेगा:

int a = 5; 
int b = 7; 

if (a < b) { 

NSLog(@"%d is smaller than %d" a, b); 

}