2012-06-24 9 views
5

के साथ ऐरे क्या मैं उपयोग की तुलना में संख्याओं के साथ सरणी भरने का एक अच्छा तरीका है? यह पागल है कि मुझे संख्याओं के साथ सरणी भरने के लिए कितना लिखना है ताकि उन्हें लूप में गणना के लिए उपयोग किया जा सके। PHP, As3, या Java जैसी अन्य सी आधारित भाषाओं में यह आसान है।उद्देश्य सी - संख्या

NSArray *myArray = [NSArray arrayWithObjects: 
        [NSNumber numberWithInt:1000],[NSNumber numberWithInt:237], [NSNumber numberWithInt:2673], nil]; 

int total = 0; 
for(int i = 0; i < [myArray count]; i += 1){ 
    total += [[myArray objectAtIndex: i]intValue]; 
    NSLog(@"%i", total); 
} 

उम्मीद है कि वहाँ एक छोटा रास्ता नहीं है ... मैं सिर्फ ints के साथ एक सरणी को भरने के लिए चाहते हैं ... नहीं कर सकते हो कि हार्ड

+2

इनमें से कोई भी भाषा "सी-आधारित" नहीं है। –

+0

कुछ चीजों के लिए आप 'NSNumber' ऑब्जेक्ट्स चाहते हैं, उन्हें संग्रह में संग्रहीत किया जा सकता है और स्वचालित रूप से फाइल/नेटवर्क स्ट्रीम आदि को एन्कोड/डीकोड किया जा सकता है। अन्य चीजों के लिए आप सुपर-फास्ट लुकअप के लिए सी सी सर में अच्छे पुराने सी इन्ट्स चाहते हैं और उपयोग (उदाहरण के लिए एक ऑडियो प्रसंस्करण समारोह में आवृत्ति तालिका)। उद्देश्य-सी में आप चुन सकते हैं कि सबसे उपयुक्त कौन सा है, यह दोनों का समर्थन करता है। – jhabbott

उत्तर

10

मैं आपको एक NSArray के लिए NSNumber उपयोग करने के लिए लगता है। आप ints मुझे लगता है कि उपयोग करना चाहते हैं यदि आप एक सी सरणी का उपयोग करना चाहते हैं:

NSInteger myArray[20]; 

for (int i=0;i<20;i++) { 
    int num=myArray[i]; 

    //do something 
} 

NSNumber हालांकि मैं इस भाषा के लिए बेहतर दृष्टिकोण लगता है। कम से कम आप कोड थोड़ा छोटा करने के लिए तेजी से गणना कर सकते हैं:

for (NSNumber *n in myArray) { 
int num = [n intValue]; 

//do something.... 

} 

संपादित करें:

प्रश्न 3 साल पहले कहा गया है।

NSNumber *n = @100; 

या

NSArray *array = @[@100,@50,@10]; 
+0

धन्यवाद मैरियो ... – mogio

+0

कोई जांच नहीं है ... स्वीकार करने के लिए स्वतंत्र महसूस करें :) – Mario

+0

वर्णित शाब्दिक वाक्यविन्यास पहले से ही उपलब्ध है: http://clang.llvm.org/docs/ObjectiveCLiterals.html –

0

पाशन विशिष्ट पूर्णांक के लिए अच्छा कम विकल्प:

NSArray *numbers = [@"1000,237,2673" componentsSeparatedByString:@","]; 
for (NSString *i in numbers) { 
    [i intValue]; // Do something. 
} 
+0

दिलचस्प तरीका ... धन्यवाद ऐनी! – mogio

0

पहले शुरू नई यह आसान NSNumbers या NSArrays की तरह वस्तुओं को बनाने के बनाने के लिए स्थापित किया गया शाब्दिक किया गया है एक सी सरणी के साथ:

NSInteger myCArray = { 1000, 237, 2673 }; 
// calculate number of elements 
NSUInteger myCArrayLength = sizeof(myCArray)/sizeof(NSInteger; 

दूसरा, अगर आप इस सरणी के माध्यम से एक NSArray पाश की जरूरत है और एक बनाने:

NSMutableArray *myNSArray = [NSMutableArray arrayWithCapacity:myCArrayLength]; 
for(NSUInteger ix = 0; ix < myCArrayLength; ix++) 
    [myNSArray addObject:[NSNumber numberWithInteger:myCArray[ix]]; 

आप यदि आप इसे एक बहुत कुछ कर रहे हैं कोड ऊपर की दूसरी टुकड़ा लपेट कर सकते हैं NSArray पर एक वर्ग के रूप में।

0

बहुत देर हो चुकी है। लेकिन आप भी निम्नलिखित कर सकते हैं।

int total = 0; 
nsarray *myArray = @[@1.8,@100,@299.8]; 
for(nsnumber *num in myArray){ 
total+=num; 
} 
+0

ऐसा लगता है कि इस वाक्यविन्यास को पहले ही स्वीकार किए गए उत्तर में शामिल किया गया है - यह मूल्य फिर से क्या रखता है? – Krease

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