-2

Я пытаюсь добавить NSMutableArray, чтобы в NSMutableDictionaryдобавление NSMutableArray к NSMutableDictionary

Мой код выглядит примерно так:

[myDictionary setObject:[NSMutableArray array] ForKey: myKey]; 
[[myDictionary objectForKey:myKey] addObject: myString]; 

Так что я пытаюсь сделать: У меня есть пустой словарь, и Я хочу иметь несколько массивов внутри этого словаря. Каждый массив имеет свой собственный ключ. В каждом массиве я хочу добавить NSString, чтобы каждый массив заполнил несколько объектов NSString.

Но, когда я пытаюсь проверить содержимое MyDictionary с помощью:

for(id key in myDictionary) 
{ 
    NSLog(@"key=%@ value=%@", key, [myDictionary objectForKey:key]); 
} 

Я только получить одну запись для каждого ключа. Что я делаю не так?

Заранее спасибо, и извините за noobness

+1

Показать код, где вы добавляете более одного значения для каждого массива. – rmaddy

+0

Прежде всего, не вызывайте «цепочку» вызовов. Создайте свой массив, назначьте адрес временному указателю, затем вставьте этот указатель в словарь. И чтобы добавить объекты в массив, верните его адрес во временный указатель, а затем используйте его для добавления записей. Используйте значащие имена для временных указателей. Это будет гораздо менее запутанным (для меня, если не для вас). –

ответ

0

Ваш код кажется правильным, он должен просто распечатать список строк в каждом массиве внутри NSDictionary. Вы добавляете в массив несколько строковых объектов? Если есть только одно значение, то, конечно, он будет печатать только одно значение :)

Если вы хотите получить доступ к каждому значению в массиве (ов) по отдельности, попробуйте следующее:

for(id key in myDictionary) 
{ 
    NSArray *array = [myDictionary objectForKey:key]; 
    for (NSString *value in array) { 
     NSLog(@"value: %@", value); 
    } 
} 
+0

Ах, похоже, что я неправильно понял часть своего кода, я подумал, что: «[[myDictionary objectForKey: myKey] addObject: myString];" это добавит NSString к определенному массиву в этом ключе. Который, читая от вашего рода ответ и другие комментарии, он явно не – Pieter

+0

Это именно то, что он делает. Рассмотрим NSDictionary как тип массива, к которому обращается строка, а не число. Макет выглядит примерно так: NSDictionary {"somekey": Array (item1, item2, item3), "someotherkey": Array (item4, item5, item6)} Итак, с одним оператором "for in" вы повторяют объекты только в NSDictionary. Каждый из этих объектов является NSArray. Вложенный оператор «for in» затем выполняет итерацию по объектам в каждом из NSArrays. – JoGoFo

Смежные вопросы