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

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只会有最后添加的对象的重复项。我卡在这里,无法继续显示正确的数据。

任何帮助将不胜感激。

谢谢

3个回答

27
尝试执行 [workOrders addObject:[woRows copy]];

1
它起作用了,我喜欢你的方法并且正在我的代码中使用。你有什么想法为什么我不能投票给你的答案?它一直被改回零。 - Ber Biji II

20

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


7
将您的字典创建代码移动到循环内部(在if条件语句内部)。
woRows = [[NSMutableDictionary alloc] init];

you are using same object...


1
谢谢,它起作用了。你有什么想法为什么我不能投票给你的答案? - Ber Biji II

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接