4

如何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;
}
4

2 回答 2

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

于 2010-02-09T19:24:36.380 回答
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"];

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

于 2010-02-09T19:39:07.957 回答