2009-01-29 12 views
28

मैं उद्देश्य-सी और आईफोन विकास के लिए नया हूं, और मैं एनएसएमयूटेबलएरे में फ्लोटिंग-पॉइंट मानों को स्टोर करने की कोशिश कर रहा हूं, लेकिन जब मुझे लगता है कि मुझे एक त्रुटि मिलती है "असंगत 'addObject' के तर्क 1 के लिए टाइप करें। मैं क्या गलत कर रहा हूं? मैं युगल की एक सरणी बनाने की कोशिश कर रहा हूं जिसमें मैं गणित की गणना कर सकता हूं।फ़्लोटिंग पॉइंट मानों का एनएसएमयूटेबलएरे बनाने के लिए कैसे करें

उत्तर

59

एनएसएमयूटेबलएरे केवल वस्तुओं को रखता है, इसलिए आप NSNumber ऑब्जेक्ट्स के साथ एक सरणी लोड करना चाहते हैं। अपनी डबल को पकड़ने के लिए प्रत्येक NSNumber बनाएं और फिर इसे अपने सरणी में जोड़ें। शायद इस तरह कुछ।

NSMutableArray *array = [[NSMutableArray alloc] init]; 
NSNumber *num = [NSNumber numberWithFloat:10.0f]; 
[array addObject:num]; 

आवश्यकतानुसार दोहराना।

+0

उपयोग numberWithFloat यदि आप परिशुद्धता जरूरत नहीं है। –

12

एक NSNumber उपयोग आपकी नाव रैप करने के लिए, क्योंकि शब्दकोश एक वस्तु की जरूरत है:

[myDictionary setObject:[NSNumber numberWithFloat:0.2f] forKey:@"theFloat"]; 
/* or */ 
[myDictionary setObject:@0.2f forKey:@"theFloat"]; 

floatValue भेजकर इसे पुनः प्राप्त:

float theFloat = [[myDictionary objectForKey:@"theFloat"] floatValue]; 

कोड अपरीक्षित है।

आप NSNumber में कई अन्य डेटा प्रकार भी लपेट सकते हैं, documentation देखें। NSPoint और NSRect जैसी कुछ संरचनाओं के लिए NSValue भी है।

7

कोको में, एनएसएमयूटेबल डिक्शनरी (और सभी संग्रह, वास्तव में) वस्तुओं को मूल्यों के रूप में आवश्यक है, इसलिए आप किसी अन्य डेटा प्रकार को बस पास नहीं कर सकते हैं। चूंकि दोनों sjmulder और रयान ने सुझाव दिया है, आप अन्य वस्तुओं के लिए NSNumber (संख्या के लिए) और NSValue के उदाहरणों में अपने स्केलर मूल्यों को लपेट सकते हैं।

यदि आप एक मूल्य संख्या के लिए दशमलव संख्या का प्रतिनिधित्व कर रहे हैं, तो मैं NSDecimalNumber पर भी देख और उपयोग करने का सुझाव दूंगा। इसके बाद आप फ्लोटिंग पॉइंट गलतता मुद्दों से बच सकते हैं, और आप आम तौर पर कोड में आदिम के साथ इसका प्रतिनिधित्व करने के बजाय "मान" को NSDecimalNumber के रूप में उपयोग और स्टोर कर सकते हैं।

उदाहरण के लिए:

// somewhere 
NSDecimalNumber* price = [[NSDecimalNumber decimalNumberWithString:@"3.50"] retain]; 
NSMutableArray* prices= [[NSMutableArray array] retain]; 

// ... 

[prices addObject:price]; 
1
NSMutableArray *muArray = [[NSMutableArray alloc] init]; 
NSNumber *float = [NSNumber numberWithFloat:210.0f]; 
NSNumber *float1 = [NSNumber numberWithFloat:211.0f]; 
[muArray addObject:float]; 
[muArray addObject:float1]; 

NSlog(@"my array is--%@",muArray); 
+0

कृपया अपना उत्तर दें – Gwenc37

संबंधित मुद्दे