Создание нескольких нумерованных переменных на основе int
Как мне создать число переменных NSDictionary
, используя подсчет массива?
Это в основном то, что я придумал, но я не уверен, как сделать эту работу синтаксисом 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;
}
Ответы
Ответ 1
Создайте изменяемый массив и цикл, пока не достигнете исходного количества массивов, создайте словарь и добавьте его в изменяемый массив на каждой итерации.
Ваш код должен выглядеть так.
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.
Ответ 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"];
Но первый способ, вероятно, самый простой.