如何在循环中将NSMutableDictionary的Object添加到NSMutableArray

时间:2009-12-24 11:02:19

标签: iphone nsmutablearray nsmutabledictionary

我很难将数据结构添加到数组中以从循环中创建字典数组。我只知道NSMutableArray中的addObject只添加指向它的指针。我想知道如何实现我的目标。

这是我的代码:

NSMutableDictionary *woRows = [[NSMutableDictionary alloc] init];
NSMutableArray *workOrders = [[NSMutableArray alloc] init];
while ([theScanner isAtEnd] == NO)
{
    if ([theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol1] &&
        [theScanner scanString:@"{US}" intoString:NULL] &&
        [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol2] &&
        [theScanner scanString:@"{US}" intoString:NULL] &&
        [theScanner scanUpToCharactersFromSet:usSet intoString:&tempCol3]&&
        [theScanner scanString:@"{RS}" intoString:NULL])
    {
        [woRows  setValue:tempCol1 forKey:@"hours"];
        [woRows setValue:tempCol2 forKey:@"colMain"];
        [woRows setValue:tempCol3 forKey:@"colAddtl"];

        [workOrders addObject:woRows];
        [woRows release];
    }
}
[tmpString release];
[jobs addObject:workOrders];
[workOrders release];

从上面的代码中,数组workOrders将只添加最后一个对象的副本。我坚持到这里无法继续显示正确​​的数据。

任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:27)

尝试[workOrders addObject:[woRows copy]];

答案 1 :(得分:20)

我知道,这有点晚了,甚至不是你要求的,但我想你想用[woRows setObject:forKey:]代替[woRows setValue:forKey:]

答案 2 :(得分:7)

将字典创建代码移动到循环内部(如果条件内部)

woRows = [[NSMutableDictionary alloc] init];

你正在使用同一个对象......