जवाबों:
आदिम @()अभिव्यक्ति के साथ वस्तुओं में परिवर्तित किया जा सकता है । तो कम से कम जिस तरह से बदलने के लिए है intकरने के लिए NSNumberऔर साथ स्ट्रिंग प्रतिनिधित्व लेने stringValueविधि:
NSString *strValue = [@(myInt) stringValue];
या
NSString *strValue = @(myInt).stringValue;
stringValue, लेकिन सभी में है description- इसलिए एक अच्छा अभ्यास के रूप में इसका उपयोग करने के लिए उपयोग किया जाना बेहतर है description( NSNumberक्या, यहां चिंता करने की कोई आवश्यकता नहीं है)। इसे आज़माएं ( descriptionतारीख को प्रिंट करेंगे, लेकिन stringValueदुर्घटनाग्रस्त हो जाएगा):NSNumber *test = (id)[NSDate date]; NSLog(@"description: %@", test.description); NSLog(@"string value: %@", test.stringValue);
@(myInt)के लिए एक बॉक्सिंग अभिव्यक्ति है [NSNumber numberWithInt:]और यह हमेशा एक इंटर्न दिए जाने पर NSNumber लौटा देगा। [NSNumber stringValue]हमेशा एक NSString लौटाएगा। आपकी टिप्पणी के कोड में, (id)एक अलग प्रकार के साथ कास्टिंग और असाइन करने के लिए मजबूर करना एक स्पष्ट प्रोग्रामिंग गलती है: आपको ऐसा कभी नहीं करना चाहिए। यह एक विधि को स्वाइप करने जैसा है और फिर उस पद्धति के बारे में एक तर्क देना जो मूल रूप से यह नहीं कर रहा था।
!) का उपयोग किए बिना अपनी टिप्पणी को स्विफ्ट में परिवर्तित करने का प्रयास करें और आप यह पता लगाएंगे कि आप इसे ऑब्जेक्टिव-सी में गलत तरीके से कर रहे थे। यदि वस्तु testआपके द्वारा नहीं बनाई गई थी, तो यह आपकी जिम्मेदारी नहीं है। आप isKindOfClass:अपने सभी प्राप्त मापदंडों के लिए कॉल करने का प्रयास कर सकते हैं , लेकिन यह भी मूर्ख बनाया जा सकता है (उदाहरण के लिए NSObject के बजाय एक संरचना को पारित करके)। तो यह मत करो: बस स्पष्ट रूप से अपेक्षित प्रकार दस्तावेज़।
(id)एक गलती है, यह सिर्फ उस बिंदु को प्रदर्शित करने के लिए था जिसे IMO descriptionसे अधिक पसंद किया जाता है stringValue(मैं गलत हो सकता है, वर्षों से ObjC में प्रोग्राम नहीं किया गया है)
NSString *string = [NSString stringWithFormat:@"%d", theinteger];
@(myInt)एक बॉक्सिंग अभिव्यक्ति है , यह एक NSNumber देता है।
यदि यह स्ट्रिंग अंतिम उपयोगकर्ता के लिए प्रस्तुति के लिए है, तो आपको उपयोग करना चाहिए NSNumberFormatter। यह हजारों विभाजक जोड़ देगा, और उपयोगकर्ता के लिए स्थानीयकरण सेटिंग्स का सम्मान करेगा:
NSInteger n = 10000;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:@(n)];
उदाहरण के लिए, अमेरिका में, यह एक तार पैदा करेगा 10,000, लेकिन जर्मनी में, यह होगा 10.000।
NSString *strValue = @(myInt).stringValue;