2010-02-09 2 views
5

Как создать число переменных NSDictionary, используя подсчет массива?Создание нескольких нумерованных переменных на основе int

Это в основном то, что я придумал, но я не уверен, как это сделать с синтаксисом Objective-C. 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]]]; 
} 

подход создания переменных с номерами в конце их имен является антипаттерн и даже не представляется возможным в Objective-C. Это эквивалентно массиву, но clunkier.

+0

Да, это имеет смысл. Я обновил свой вопрос кодом, который я придумал. Я просто не знаю, как установить объект как имя переменной. :/ –

+0

Это именно то, что я пытался сделать. У меня было это в голове, но я все еще слишком новичок в объективе-c, и, честно говоря, я не думаю, что когда-либо делал это на C++. –

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

Благодарим за объяснение этого. Я понимаю это намного лучше сейчас :) –

 Смежные вопросы

  • Нет связанных вопросов^_^