NSString में int कैसे कन्वर्ट करें?


101

मैं उद्देश्य सी में एक intको परिवर्तित करना चाहता हूं NSString

मैं यह कैसे कर सकता हूँ?

जवाबों:


147

आदिम @()अभिव्यक्ति के साथ वस्तुओं में परिवर्तित किया जा सकता है । तो कम से कम जिस तरह से बदलने के लिए है intकरने के लिए NSNumberऔर साथ स्ट्रिंग प्रतिनिधित्व लेने stringValueविधि:

NSString *strValue = [@(myInt) stringValue];

या

NSString *strValue = @(myInt).stringValue;

12
थोड़ा कम NSString *strValue = @(myInt).stringValue;
क्रिया

@DielsonSales कुछ वस्तुओं में नहीं है stringValue, लेकिन सभी में है description- इसलिए एक अच्छा अभ्यास के रूप में इसका उपयोग करने के लिए उपयोग किया जाना बेहतर है description( NSNumberक्या, यहां चिंता करने की कोई आवश्यकता नहीं है)। इसे आज़माएं ( descriptionतारीख को प्रिंट करेंगे, लेकिन stringValueदुर्घटनाग्रस्त हो जाएगा):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
इस्लाम प्र।

1
@IslamQ। @(myInt)के लिए एक बॉक्सिंग अभिव्यक्ति है [NSNumber numberWithInt:]और यह हमेशा एक इंटर्न दिए जाने पर NSNumber लौटा देगा। [NSNumber stringValue]हमेशा एक NSString लौटाएगा। आपकी टिप्पणी के कोड में, (id)एक अलग प्रकार के साथ कास्टिंग और असाइन करने के लिए मजबूर करना एक स्पष्ट प्रोग्रामिंग गलती है: आपको ऐसा कभी नहीं करना चाहिए। यह एक विधि को स्वाइप करने जैसा है और फिर उस पद्धति के बारे में एक तर्क देना जो मूल रूप से यह नहीं कर रहा था।
करूर

1
@IslamQ। क्रैश ऑपरेटर ( !) का उपयोग किए बिना अपनी टिप्पणी को स्विफ्ट में परिवर्तित करने का प्रयास करें और आप यह पता लगाएंगे कि आप इसे ऑब्जेक्टिव-सी में गलत तरीके से कर रहे थे। यदि वस्तु testआपके द्वारा नहीं बनाई गई थी, तो यह आपकी जिम्मेदारी नहीं है। आप isKindOfClass:अपने सभी प्राप्त मापदंडों के लिए कॉल करने का प्रयास कर सकते हैं , लेकिन यह भी मूर्ख बनाया जा सकता है (उदाहरण के लिए NSObject के बजाय एक संरचना को पारित करके)। तो यह मत करो: बस स्पष्ट रूप से अपेक्षित प्रकार दस्तावेज़।
करूर

@ C @ur, बेशक किसी ऑब्जेक्ट को कास्टिंग करना (id)एक गलती है, यह सिर्फ उस बिंदु को प्रदर्शित करने के लिए था जिसे IMO descriptionसे अधिक पसंद किया जाता है stringValue(मैं गलत हो सकता है, वर्षों से ObjC में प्रोग्राम नहीं किया गया है)
इस्लाम Q.

144
NSString *string = [NSString stringWithFormat:@"%d", theinteger];

@ जब आप आदिम प्रकार जानते हैं, तो मुझे आश्चर्य होता है कि क्या आपके कोड से इंटरमीडिएट NSNumber से बचने के लिए थोड़ा कम ओवरहेड हो सकता है? @(myInt)एक बॉक्सिंग अभिव्यक्ति है , यह एक NSNumber देता है।
Cœur

37
int i = 25;
NSString *myString = [NSString stringWithFormat:@"%d",i];

यह कई तरीकों में से एक है।


2

यदि यह स्ट्रिंग अंतिम उपयोगकर्ता के लिए प्रस्तुति के लिए है, तो आपको उपयोग करना चाहिए NSNumberFormatter। यह हजारों विभाजक जोड़ देगा, और उपयोगकर्ता के लिए स्थानीयकरण सेटिंग्स का सम्मान करेगा:

NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];

उदाहरण के लिए, अमेरिका में, यह एक तार पैदा करेगा 10,000, लेकिन जर्मनी में, यह होगा 10.000

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.