24

我很难将数据结构添加到数组中以从循环中创建字典数组。我只知道 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 将仅添加最后一个对象的副本。我卡在这里无法继续显示正确​​的数据。

任何帮助将不胜感激。

谢谢

4

3 回答 3

27

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

于 2009-12-24T11:07:34.720 回答
20

我知道,这有点晚了,甚至不是你所要求的,但我猜你想使用[woRows setObject:forKey:]而不是[woRows setValue:forKey:].

于 2011-09-15T14:29:41.970 回答
7

将您的字典创建代码移动到循环内(在 if 条件内)

woRows = [[NSMutableDictionary alloc] init];

您正在使用相同的对象...

于 2009-12-24T11:13:52.797 回答