Могу ли я вставить объект в NSDictionary? - PullRequest
0 голосов
/ 09 августа 2011

Я получаю список координат с нашего веб-сервера.Я храню весь список как NSDictionary.Пока я использую данные (широта, длина, радиус, имя), я бы хотел обновить список данных еще одним или двумя полями.Есть ли способ вставить эти 2 элемента в существующий словарь?

Моя единственная существующая мысль - мне нужно было бы загрузить данные в NSMutableDictionary, чтобы разрешить добавления, и просто создать новый словарь и перезаписать существующий.с новыми обновленными данными.Надеясь на более простой или чистый способ, чем гетто фальсификации.Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Из документов :

Класс NSDictionary объявляет программный интерфейс к объектам, которые управляют неизменяемыми ассоциациями ключей изначения.

Итак, NSDictionary является неизменным - вы не можете добавить к нему.Использование NSMutableDictionary не является нечистым или "фальсификацией гетто" ... вот и вся цель NSMutableDictionary.

1 голос
/ 09 августа 2011

Ваша мысль верна, вам нужно создать NSMutableDictionary, так как NSDictionary не может быть изменен.

NSMutableDictionary *newDoc = [[NSMutableDictionary alloc] initWithDictionary:doc];

Если у вас есть неизменяемые массивы или словари в NSDictionary, вам может потребоваться глубокая копиядля модификаций.

NSMutableDictionary *newDoc = (NSMutableDictionary *)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, doc, kCFPropertyListMutableContainers);
...