2009-12-24 95 views
24

我很難將數據結構添加到數組中以從循環創建字典數組。我只知道在NSMutableArray中的addObject只添加指向它的指針。我想知道如何實現我的目標。如何將NSMutableDictionary的對象添加到循環中的NSMutableArray中

這裏是我的代碼:

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

從上面的代碼中,陣列工作訂單將只有最後添加對象的副本。我卡在這裏無法進展顯示正確的數據。

任何幫助將不勝感激。

感謝

回答

27

嘗試做[workOrders addObject:[woRows copy]];

+1

它工作,我喜歡你的方法,並在我的代碼中使用。任何想法,爲什麼我不能投票給你的答案?它保持變回零 – 2009-12-24 12:27:10

7

移動循環內你的字典創建代碼(如內部條件)

woRows = [[NSMutableDictionary alloc] init]; 

您使用相同的對象...

+1

謝謝,它的工作。任何想法,爲什麼我不能投票給你的答案? – 2009-12-24 12:25:05

+0

即使你沒有最低的投票聲望...... – 2009-12-24 13:05:26

20

我知道,這有點晚了,甚至不是你要求的,但我想你想用[woRows setObject:forKey:]而不是[woRows setValue:forKey:]

相關問題