2009-04-22 13 views
35

मुझे एक गतिशील एनएसएआरएआरई बनाना है, यानी, मुझे सरणी के आकार या सरणी के तत्वों के बारे में पता नहीं है। तत्वों को गतिशील रूप से सरणी में जोड़ा जाना चाहिए। मैंने एनएसएआरएआरई कक्षा संदर्भ को देखा। ArrayWithObjects नामक एक विधि है, जिसे सरणी को प्रारंभ करने के समय उपयोग किया जाना चाहिए। लेकिन मुझे नहीं पता कि मुझे क्या करना है।NSArray तत्व जोड़ने

NSArray *stringArray = [[NSArray init] alloc] ; 
for (int i = 0; i < data.size; i++){ 
    stringArray.at(i) = getData(i); 
} 

उत्तर

73

आप एक NSArray आप इसे करने के तत्वों को जोड़ने के लिए सक्षम नहीं होंगे बनाते हैं, तो बाद से यह अपरिवर्तनीय है:

मैं निम्नलिखित की तरह कुछ भी करने की आवश्यकता। आपको इसके बजाय NSMutableArray का उपयोग करने का प्रयास करना चाहिए।

इसके अलावा, आपने alloc और init के आदेश को उलटा कर दिया। alloc एक उदाहरण बनाता है और init इसे प्रारंभ करता है।

कोड कुछ इस तरह दिखेगा (यह मानते हुए getData एक वैश्विक समारोह है):

NSMutableArray *stringArray = [[NSMutableArray alloc] init]; 
for(int i=0; i< data.size; i++){ 
    [stringArray addObject:getData(i)]; 
} 
4

यहाँ एक और तरीका सरणी में वस्तु को जोड़ने के लिए अगर आप अपरिवर्तनीय सरणी के साथ काम कर रहे हैं। जो धागा सुरक्षित है।

आप arrayByAddingObject विधि का उपयोग कर सकते हैं। कुछ बार यह बहुत बेहतर है। `नए तत्व जोड़ नहीं है; NSMutableArray vs NSArray which is better

+0

' [@ "mažiukas" सरणी arrayByAddingObject] यहां इसके बारे में चर्चा है। –

1

NSMutableArray करने के लिए अपने NSArray कन्वर्ट, और फिर आप मान डायनामिक जोड़ सकते हैं::

NSMutableArray *mutableStringArray = [stringArray mutableCopy]; 
[mutableStringArray addObject:@"theNewElement"];