如何使用数组的计数创建多个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;
}
答案 0 :(得分: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中也不可能。它相当于一个数组,但更笨拙。
答案 1 :(得分: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"];
但第一种方式可能是最简单的。