我很难将数据结构添加到数组中以从循环中创建字典数组。我只知道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将只添加最后一个对象的副本。我坚持到这里无法继续显示正确的数据。
任何帮助将不胜感激。
由于
答案 0 :(得分:27)
尝试[workOrders addObject:[woRows copy]];
答案 1 :(得分:20)
我知道,这有点晚了,甚至不是你要求的,但我想你想用[woRows setObject:forKey:]
代替[woRows setValue:forKey:]
。
答案 2 :(得分:7)
将字典创建代码移动到循环内部(如果条件内部)
woRows = [[NSMutableDictionary alloc] init];
你正在使用同一个对象......