2011-12-16 9 views
0

私は住所と連絡先の詳細を含む辞書のいくつかの配列を持っています。辞書の各配列を順番に調べ、各住所の場所を検索し、対応する経度と緯度を保存したいと思います。ですから辞書の配列の場合、の2つの追加キー "経度"と "緯度"をそれぞれの値で付加したいと考えています。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 = [array objectAtIndex:x]'を使うことです。 – mga

+0

またはtemp NSMutableDictionary * myDict = [NSDictionary dictionaryWithDictionary:[配列objectAtIndex:x]]; '新しいオブジェクトを追加し、マスターに挿入します – mga

答えて

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

そして、古い辞書/配列を新しいものに置き換えることができます。

+0

素晴らしい。マイケルに感謝 – Jeremy

1

一つのアプローチ:

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

また、あなたが最初の場所で辞書をコピーするために必要な理由はわかりません。 addObject:は参照を保持するだけです。

+0

優秀です。ありがとうDavid – Jeremy

関連する問題