views:

2144

answers:

2

Hi all,

I'm having difficulty to add a data structure to an array to create an array of dictionaries from a loop. I just knew that addObject in NSMutableArray only add pointer to it. I would like to know how to achieve my goal.

Here's my code:

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];

from the code above, the array workOrders will have duplicates of last objects added only. I stuck here not able to progress to display the correct data.

Any help will be appreciated.

Thanks

+2  A: 

try doing [workOrders addObject:[woRows copy]];

Kenny Winker
It worked, and I like your approach and being used in my code. Any idea why I cannot vote to your answer ? It kept changed back to zero
Ber Biji II
+1  A: 

move your dictionary creation code inside the loop(inside if condition)

woRows = [[NSMutableDictionary alloc] init];

you are using same object...

Girish Kolari
Thank you, it worked. Any idea why I cannot vote to your answer?
Ber Biji II
since you have selected other other answer....
Girish Kolari
even you don't have minimum reputation required to vote....
Girish Kolari
Thank you for the answers, please don't be disappointed because I don't pick your answer. I pick Kenny's because it fit to other parts of my codes not only for this case. Both of you guys rocks! Really appreciated your help.
Ber Biji II