NSNumber को NSString में कैसे बदलें


132

तो मेरे पास s और s के NSArrayसाथ एक "myArray" है । मुझे उनकी आवश्यकता है ताकि मैं इस तरह से जाऊं:NSNumberNSStringUIView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

DetailViewController *details = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
details.subjectText = [[myArray objectAtIndex:indexPath.row] objectForKey:@"subject"];

सब्जेक्टटेक्स्ट काम करता है। लेकिन मैं NSNumberइसे से बाहर कैसे निकाल सकता हूं ? (मैं वास्तव में उन्हें तार के रूप में की जरूरत है ...) मैं इस तरह NSStringसे एक बाहर कन्वर्ट होगा :। लेकिन मुझे नहीं पता कि इसे ऊपर के कोड में कैसे सेट करना है ...NSNumberNSString *blah = [NSNumber intValue]


आपके सरणी में वास्तव में शब्दकोशों का उपयोग होता है, के उपयोग से देखते हुए objectForKey। इसलिए आपको रूपांतरण करने का प्रयास करने से पहले उचित मान निकालने होंगे। ध्यान दें कि NSNumber सहित अधिकांश कोको ऑब्जेक्ट प्रकारों को descriptionविधि को कॉल करके (या %@एक प्रारूप स्ट्रिंग में उपयोग करके ) स्ट्रिंग्स में परिवर्तित किया जा सकता है ।
16

वाह .. धन्यवाद आप walkytalky! क्या आप मुझे एक दस्तावेज की ओर इशारा कर सकते हैं या इसे समझने के लिए एक उदाहरण कोड दे सकते हैं? =)
dav3

जवाबों:


380

प्रयत्न:

NSString *myString = [NSNumber stringValue];

3
लेकिन आपको NSNumber लेना चाहिए जो कि सरणी के अंदर है और फिर StringValue विधि को कॉल करें, कुछ NSString * myString = [[myArray objectAtIndex: i] stringValue]; लेकिन आपको यह सुनिश्चित करना होगा कि आपके पास उस सूचकांक पर एक NSNumber है
जोनलो

मैं विवरण पसंद करता हूं। लियोक्लेले: [एनएसलोकेल करेंटोकेल] क्योंकि यह किट्स और फ्लोट्स दोनों के लिए काम करता है।
just.do.it

@ जोंलो जब विशिष्ट संख्या के लिए इसका उपयोग करते हैं तो दशमलव मान ढीले मानों को ढीला कर देते हैं। उदाहरण के लिए: NSNumber * संख्या = [NSNumber संख्याWDDouble: 48.3]; NSString * strNumber = num.stringValue; 48.299999 के रूप में परिणाम देता है; यह महत्वपूर्ण हो जाता है अगर इसकी राशि और वास्तविक दुनिया में और बड़ी संख्या के साथ गुणा करना है। !! कोई सोच?
Vish

हाय @Vish, मैं इस समाधान की कोशिश नहीं की है तो यकीन नहीं im अगर यह काम करेगा, %fइस तरह से इसे स्वरूपित करने की कोशिश : [NSString stringWithFormat:@"%f", yourDouble];
जोनलो

"चयनकर्ता 'स्ट्रिंगवैल्यू' के लिए कोई ज्ञात क्लास विधि नहीं है" <- stringValue एक क्लास फ़ंक्शन नहीं है इसलिए आप इसे सीधे NSNumber पर नहीं कह सकते। rhalgravez का जवाब इसे सही ढंग से करता है।
user1021430

13

आप इसके साथ कर सकते हैं:

NSNumber *myNumber = @15;
NSString *myNumberInString = [myNumber stringValue];

7
//An example of implementation :
// we set the score of one player to a value
[Game getCurrent].scorePlayer1 = [NSNumber numberWithInteger:1];
// We copy the value in a NSNumber
NSNumber *aNumber = [Game getCurrent].scorePlayer1;
// Conversion of the NSNumber aNumber to a String with stringValue
NSString *StringScorePlayer1 = [aNumber stringValue];

5

या कोशिश करो NSString *string = [NSString stringWithFormat:@"%d", [NSNumber intValue], nil];


8
यह दो रूपांतरण करता है। एक NSNumber को intValue में बदलने के लिए और एक NSString में परिणामी intValue को जमा करने के लिए। इसका उपयोग करना कुछ के लिए छोटा हो सकता है, लेकिन इसे निकालना छोटे कम्प्यूटेशनल चक्रों को बचाने का एक शानदार तरीका है ... जो जोड़ सकता है।
जन्न

यह मानता है कि संचित किए जा रहे नंबर इनट्स हैं। क्या होगा यदि आप संख्या के प्रकार को संग्रहीत नहीं जानते हैं?
जेम्स वेबस्टर

3

मज़ेदार बात यह है कि यदि स्ट्रिंग का हिस्सा बन जाता है तो NSNumber स्वचालित रूप से स्ट्रिंग में परिवर्तित हो जाता है। मुझे नहीं लगता कि यह प्रलेखित है। इन्हें कोशिश करें:

NSLog(@"My integer NSNumber:%@",[NSNumber numberWithInt:184]);
NSLog(@"My float NSNumber:%@",[NSNumber numberWithFloat:12.23f]);
NSLog(@"My bool(YES) NSNumber:%@",[NSNumber numberWithBool:YES]);
NSLog(@"My bool(NO) NSNumber:%@",[NSNumber numberWithBool:NO]);

NSString *myStringWithNumbers = [NSString stringWithFormat:@"Int:%@, Float:%@ Bool:%@",[NSNumber numberWithInt:132],[NSNumber numberWithFloat:-4.823f],[NSNumber numberWithBool:YES]];
NSLog(@"%@",myStringWithNumbers);

यह प्रिंट होगा:

My integer NSNumber:184
My float NSNumber:12.23
My bool(YES) NSNumber:1
My bool(NO) NSNumber:0
Int:132, Float:-4.823 Bool:1

मैक और आईओएस दोनों पर काम करता है

यह काम नहीं करता है:

NSString *myNSNumber2 = [NSNumber numberWithFloat:-34512.23f];

2
यह प्रलेखित है: %@प्रारूप निर्दिष्टकर्ता -descriptionसंबंधित रिसीवर ऑब्जेक्ट को संदेश भेजेगा । आप लेखन द्वारा एक ही आत्मा में अपने अंतिम पंक्ति काम कर सकते हैं: NSString *myNSNumber2 = [[NSNumber numberWithFloat:-34512.23f] description];। जहाँ तक मेरा बता सकता हूँ, NSNumber'एस descriptionऔर stringValueतरीकों एक ही बात करते हैं।
जीन-डेनिस मुईस

2

स्विफ्ट में आप ऐसा कर सकते हैं

let number : NSNumber = 95
let str : String = number.stringValue

2

स्विफ्ट 3.0 में

let number:NSNumber = 25
let strValue = String(describing: number as NSNumber)
print("As String => \(strValue)")

हम स्ट्रिंग में संख्या मान प्राप्त कर सकते हैं।

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