基于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; } 

创建一个可变数组并循环,直到达到原始数组的计数,创建一个字典并在每次迭代中将其添加到可变数组中。

你的代码应该像这样。

 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中甚至不可能。 这相当于一个数组,但更笨拙。

您需要创建一个可变数组,然后将这些对象放入数组中。 您不能像创建一个字符串的内容那样创建一个名称相同的变量。 例如:

 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"]; 

但第一种方法可能是最简单的。