int

2010-02-09 12 views
5

पर आधारित कई क्रमांकित चर बनाएं I array की गणना का उपयोग करके NSDictionary चर बनाने के लिए कैसे बनाएंगे?int

यह मूल रूप से मैं किसके साथ आया था, लेकिन मुझे यकीन नहीं है कि यह कार्य उद्देश्य-सी वाक्यविन्यास के साथ कैसे करें। doesntContainAnother एक NSArray है। मैं शब्दकोशों के नाम loopInt के वर्तमान मूल्य का उपयोग करना चाहता हूं।

int *loopInt = 0; 
while (doesntContainAnother.count <= loopInt) { 

    NSMutableDictionary *[NSString stringWithFormat:@"loopDictionary%i", loopInt] = [[[NSMutableDictionary alloc] init] autorelease]; 
    [NSString stringWithFormat:@"loopDictionary%i", loopInt] = [NSDictionary dictionaryWithObject:[array1 objectAtIndex:loopInt] 
               forKey:[array2 objectAtIndex:loopInt]]; 
    loopInt = loopInt + 1; 
} 
+0

क्या आप जो चाहते हैं उसे स्पष्ट कर सकते हैं? आप शब्दकोशों की एक सरणी बनाना चाहते हैं जिसमें प्रत्येक में केवल एक मान हो? – kubi

उत्तर

4

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

आपका कोड इस तरह दिखना चाहिए।

NSMutableArray *dictionaries = [[NSMutableArray alloc] init]; 
for (int i = 0; i < doesntContainAnother.count; i++) { 
    [dictionaries addObject:[NSMutableDictionary dictionaryWithObject:[array1 objectAtIndex:i] forKey:[array2 objectAtIndex:i]]]; 
} 

उनके नाम के अंत में संख्या के साथ चर बनाने का दृष्टिकोण एक antipattern और ऑब्जेक्टिव-सी में भी संभव नहीं है। यह एक सरणी के बराबर है, लेकिन clunkier।

+0

हाँ, यह समझ में आता है। मैंने अपने प्रश्न को कोड के साथ अपडेट किया जिसके साथ मैं आया था। मैं बस नहीं जानता कि ऑब्जेक्ट को एक चर नाम के रूप में कैसे सेट करें। :/ –

+0

वही है जो मैं करने की कोशिश कर रहा था। मेरे पास यह मेरे सिर में था लेकिन मैं अभी भी उद्देश्य-सी के लिए बहुत नया हूं, और ईमानदार होने के लिए मुझे नहीं लगता कि मैंने कभी भी सी ++ में ऐसा किया है। –

2

आपको एक म्यूटेबल सरणी बनाने की आवश्यकता है, और फिर वस्तुओं को सरणी में डाल दें। जैसा कि आपने किया है, आप एक स्ट्रिंग की सामग्री के समान नाम के साथ एक वैरिएबल नहीं बना सकते हैं। उदाहरण के लिए:

NSMutableArray *arr = [[NSMutableArray alloc] initWithCapacity:[doesntContainAnother count]]; 
int i = 0; // Note: type is int, not int* 
for (i = 0; i < [doesntCountainAnother count]; i++) { 
    [arr addObject:[NSMutableDictionary dictionary]]; 
} 

// Later... 
NSMutableDictionary *d1 = [arr objectAtIndex:3]; 

या आप उन्हें नाम से सूची से बाहर निकलने करना चाहते हैं:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:[doesntCountainAnother count]]; 
int i = 0; 
for (i = 0; i < [doesntContainAnother count]; i++) { 
    [dict setObject:[NSMutableDictionary dictionary] forKey:[NSString stringWithFormat:@"loopDictionary%d", i]]; 
} 

// Later... 
NSMutableDictionary *d1 = [dict objectForKey:@"loopDictionary3"]; 

लेकिन पहले जिस तरह से होने की संभावना सबसे आसान है।

+0

इसे समझाने के लिए धन्यवाद। मैं अब यह बहुत बेहतर समझता हूँ :) –

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