मैं NSInteger को NSString डेटाटाइप में कैसे परिवर्तित करूँ?


137

कैसे एक डेटाटाइप में परिवर्तित NSIntegerहोता है NSString?

मैंने निम्नलिखित की कोशिश की, जहां माह एक है NSInteger:

  NSString *inStr = [NSString stringWithFormat:@"%d", [month intValue]];

जवाबों:


267

NSIntegers ऑब्जेक्ट नहीं हैं, आपने उन्हें longवर्तमान 64-बिट आर्किटेक्चर की परिभाषा से मेल खाने के लिए कास्ट किया है :

NSString *inStr = [NSString stringWithFormat: @"%ld", (long)month];


11
मैंने यह कोशिश की, लेकिन मुझे चेतावनी मिलती रही Format specifies type 'int' but the argument has type 'NSInteger *'(aka 'int *')। इसके बजाय Apple डॉक्स के साथ , मैं साथ चला गयाNSString *inStr = [NSString stringWithFormat:@"%d", (int)month];
स्टीवन

8
ध्यान दें कि 64-बिट प्रोसेसर पर, जैसे कि नई A7 चिप, यदि आपका ऐप 64-बिट के लिए संकलित किया गया है, तो एक NSInteger वास्तव में एक लंबा है, एक इंट नहीं। कास्ट करना, (int) महीना जेनेरिक केस के लिए 64-बिट प्लेटफॉर्म पर विनाशकारी होगा। यदि Apple प्लेटफ़ॉर्म को विशेष रूप से लक्षित किया जा रहा है, तो Aleksey Kozhevnikov के उत्तर के रूप में ऑब्जेक्टिव-सी तरीका पसंद करते हैं, या ऐसा ही कुछ जो दोनों int और long दोनों के साथ काम करेगा - जैसे लंबा ;-) एक उदाहरण, हालांकि अहस्ताक्षरित (जिसका अर्थ गैर-नकारात्मक है) एंड्रियास में है। ले का जवाब।
लुई सेंट-अमोर

1
@ वर्तमान में, मैंने उत्तर को हटाने की कोशिश की है ताकि वर्तमान, अधिक लागू वाले, सतह और स्वीकार किए जा सकें, लेकिन जाहिर है, स्वीकृत उत्तर हटाए नहीं जा सकते। इसलिए मैंने कम से कम इसकी सामग्री को समायोजित करने की कोशिश की है ताकि लोगों को त्वरित समाधान की तलाश में अधिक उपयोगी जानकारी प्रदान की जा सके जो चेतावनी को ट्रिगर नहीं करता है।
लूव्रिएरे

@luvieere Apple के प्रलेखन में स्पष्ट रूप से बताया गया है कि प्रारूप स्ट्रिंग में NSInteger का इलाज कैसे किया जाता है। इस सलाह का पालन करने के लिए आपको अपना जवाब अपडेट करना चाहिए।
निकोलाई रुहे

2
[@(integerValue) stringValue]एक क्लीनर दृष्टिकोण है।
जोरावर


76

आधुनिक उद्देश्य-सी

एक NSIntegerविधि है stringValueजो एक शाब्दिक के साथ भी इस्तेमाल की जा सकती है

NSString *integerAsString1 = [@12 stringValue];

NSInteger number = 13;
NSString *integerAsString2 = [@(number) stringValue];

बहुत आसान। है ना?

तीव्र

var integerAsString = String(integer)

8

%zdNSIntegers के लिए काम करता है (NSUInteger के %tuलिए) 32-बिट और 64-बिट आर्किटेक्चर दोनों पर कोई जाति और कोई चेतावनी नहीं है। मुझे नहीं पता कि यह " अनुशंसित तरीका " क्यों नहीं है ।

NSString *string = [NSString stringWithFormat:@"%zd", month];

यदि आप रुचि रखते हैं कि यह कार्य इस प्रश्न को क्यों देखता है ।


5

करने का आसान तरीका:

NSInteger value = x;
NSString *string = [@(value) stringValue];

यहाँ @(value)दिए गए NSIntegerको एक NSNumberऑब्जेक्ट में कनवर्ट करता है जिसके लिए आप आवश्यक फ़ंक्शन को कॉल कर सकते हैं stringValue,।


2

जब समर्थन के लिए संकलन arm64, यह एक चेतावनी उत्पन्न नहीं करेगा:

[NSString stringWithFormat:@"%lu", (unsigned long)myNSUInteger];

1

आप भी आजमा सकते हैं:

NSInteger month = 1;
NSString *inStr = [NSString stringWithFormat: @"%ld", month];

0

इसका उत्तर दिया गया है, लेकिन यह सोचें कि कुछ स्थिति के लिए यह NSInteger से स्ट्रिंग प्राप्त करने का दिलचस्प तरीका भी होगा

NSInteger value = 12;
NSString * string = [NSString stringWithFormat:@"%0.0f", (float)value];

0

इस मामले में NSNumber आपके लिए अच्छा हो सकता है।

NSString *inStr = [NSString stringWithFormat:@"%d", 
                    [NSNumber numberWithInteger:[month intValue]]];
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.