उदाहरण के लिए जब एक गुजर valueएक करने के लिए संदेश NSIntegerइसलिए जैसे उदाहरण
[a value] यह EXC_BAD_ACCESS का कारण बनता है।
तो कैसे कन्वर्ट करने के NSIntegerलिए int?
यदि यह प्रासंगिक है केवल छोटी संख्या <32 का उपयोग किया जाता है।
उदाहरण के लिए जब एक गुजर valueएक करने के लिए संदेश NSIntegerइसलिए जैसे उदाहरण
[a value] यह EXC_BAD_ACCESS का कारण बनता है।
तो कैसे कन्वर्ट करने के NSIntegerलिए int?
यदि यह प्रासंगिक है केवल छोटी संख्या <32 का उपयोग किया जाता है।
जवाबों:
ता दा:
NSInteger myInteger = 42;
int myInt = (int) myInteger;
NSInteger32/64 बिट इंट से अधिक कुछ नहीं है। (यह आपके द्वारा चलाए जा रहे OS / प्लेटफॉर्म के आधार पर उपयुक्त आकार का उपयोग करेगा)
आप इस इनलाइन क्या करना चाहते हैं, तो बस डाली NSUIntegerया NSIntegerएक करने के लिए int:
int i = -1;
NSUInteger row = 100;
i > row // true, since the signed int is implicitly converted to an unsigned int
i > (int)row // false
NSIntegerस्थान पर मान का उपयोग करने का प्रयास करते हैं तो एक अंतर्निहित रूपांतरण होगा int। न तो मामले में यह एक बहु-पंक्ति समाधान है।
मैं परिस्थितियों जहां एक बदलने की आवश्यकता के बारे में यकीन नहीं है NSIntegerएक करने के लिए int।
NSInteger सिर्फ एक टाइपफ़ेड है:
NSInteger एक पूर्णांक का वर्णन करता था कि आप 32-बिट या 64-बिट सिस्टम के लिए निर्माण कर रहे हैं।
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
आप NSIntegerकिसी भी जगह का उपयोग कर सकते हैं जिसे आप intइसे परिवर्तित किए बिना उपयोग कर सकते हैं ।
UIsegmentedControl में सामान्य रूप से उपयोग किया जाता है, "त्रुटि" तब दिखाई देती है जब 32 बिट्स के बजाय 64 बिट्स में संकलित किया जाता है, एक नए चर के लिए इसे पास नहीं करने का आसान तरीका इस युक्तियों का उपयोग करना है, जोड़ना (int) :
[_monChiffre setUnite:(int)[_valUnites selectedSegmentIndex]];
के बजाय :
[_monChiffre setUnite:[_valUnites selectedSegmentIndex]];