NSDictionary в 1 NSMutableArray - PullRequest
       17

NSDictionary в 1 NSMutableArray

2 голосов
/ 03 августа 2009

Можно ли взять 2 NSDictionaries и заполнить 1 NSMutableArray? Допустим, у меня есть такая ситуация:

dict1 = ключ / значение: ID / Firstname

dict2 = ключ / значение: Идентификатор / фамилия

(Заполняются из запроса к базе данных на сервер)

Теперь я хочу объединить словари в NSMutableArray «пользовательских» объектов. пользовательский объект имеет эти переменные, отображающиеся на 2 объекта NSDict выше. Так: id, имя, фамилия (все это строка NSString)

Я пробовал разные вещи.

Проблема заключается в следующем, когда я извлекаю ключ / значения NSDictionary (используя NSEnumerator - но также пытался с более медленным циклом for) и добавляю полученный объект в mutablearray, значения объектов внутри массива инициализируются в такой же объект для всех предыдущих значений. Пример:

id: 1 - имя: John - фамилия: Brown
id: 2 - имя: Mike - фамилия: Blue
id: 3 - имя: Мария - фамилия: белый

К тому времени, когда я закончу перечисление и достигну конца цикла, мой массив будет выглядеть так (все объекты идентичны)

id: 3 - имя: Мария - фамилия: белый
id: 3 - имя: Мария - фамилия: белый
id: 3 - имя: Мария - фамилия: белый

Любой совет?

1 Ответ

4 голосов
/ 03 августа 2009

Не уверен, в чем ваша проблема, фрагмент кода может помочь, но вот как я бы это сделал:

for (NSString *key in [dict1 allKeys]) {
  User *u = [[User alloc] initWithId:key
                           firstName:[dict1 objectForKey:key]
                            lastName:[dict2 objectForKey:key]];
  [users addObject:u];
  [u release];
}

Я бы не стал использовать NSEnumerator для самих объектов, потому что они не в гарантированном порядке.

Если это уже то, что вы делаете, вам, возможно, придется взглянуть на что-то странное с помощью User init метода. Вы на самом деле используете один и тот же объект снова и снова?

...