2011-12-16 35 views
0

我有幾個包含地址和聯繫方式的詞典數組。我想循環查看每個字典的數組,並查找每個地址的位置並存儲它們對應的經度和緯度。因此,對於任何字典陣列,我希望能夠附加兩個額外的鍵「經度」和「緯度」與各自的價值觀。iPhone:如何添加額外的對象和鍵到現有的字典數組?

目前,我創建了一個新的字典,讀取每個鍵和值[包括新的經度和緯度],然後寫一個全新的數組。似乎過於複雜。有沒有更好的辦法?

 //copy into new array 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"Category"]  forKey:@"Category"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"Name"]   forKey:@"Name"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"Address"]  forKey:@"Address"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"PhoneNumber"] forKey:@"PhoneNumber"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"ContactTitle"] forKey:@"ContactTitle"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"ContactName"] forKey:@"ContactName"]; 

//APPENDING LOCATION KEYS AND DATA 

    [dict setObject:[[array objectAtIndex:x] objectForKey:@"Longitude"] forKey:@"Longitude"]; 
    [dict setObject:[[array objectAtIndex:x] objectForKey:@"Latitude"]  forKey:@"Latitude"]; 

    [masterArrayWithDistance addObject:[dict copy]]; 
+0

也許一個更好的主意是有一個臨時的`myObject = [數組objectAtIndex:x]`而不是訪問每個鍵一次數組? – mga 2011-12-16 00:42:06

+0

或臨時`NSMutableDictionary * myDict = [NSDictionary dictionaryWithDictionary:[array objectAtIndex:x]];`並添加新的對象,並將其插入主 – mga 2011-12-16 00:45:42

回答

1

你想創建一個數組/字典的mutableCopy。

NSMutableArray *copyArray = [originalArray mutableCopy]; 
NSMutableDictionary *copyDic = [[array objectAtIndex:x] mutableCopy]; 
[copyDic setObject:[[array objectAtIndex:x] objectForKey:@"Longitude"] forKey:@"Longitude"]; 
[copyDic setObject:[[array objectAtIndex:x] objectForKey:@"Latitude"]  forKey:@"Latitude"]; 

然後你可以用新的替換舊的字典/數組。

1

一種方法:

NSMutableDictionary* d = [NSMutableDictionary dictionaryWithDictionary: dict]; 
[d setObject: newLongitude forKey: @"Longitude"]; 
[d setObject: newLatitude forKey: @"Latitude"]; 
[masterArrayWithDistance addObject: d]; 

而且,不知道爲什麼你需要複製的字典擺在首位。 addObject:只會保留參考。

+0

優秀。謝謝大衛 – Jeremy 2011-12-18 14:16:32

相關問題