iPhone: Как добавить дополнительные объекты и ключи в существующий массив словарей? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть несколько массивов словарей, содержащих адрес и контактные данные. Я хотел бы прокрутить каждый массив словарей, найти местоположение каждого адреса и сохранить их соответствующие долготу и широту. Поэтому для любого массива словарей я хочу иметь возможность добавить две дополнительные клавиши "долгота" и "широта" с соответствующими значениями.

В данный момент я создаю новый словарь, читаю каждый ключ и значение [включая новую долготу и широту], а затем пишу целый новый массив. Кажется слишком запутанным. Есть ли лучший способ?

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

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Вы хотите создать 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 голос
/ 16 декабря 2011

Один подход:

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

Также не уверен, зачем вам сначала нужно было скопировать словарь.addObject: просто сохранил бы ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...