2014-05-11 3 views
0

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

ток:

DICT:1 root 
      |_main dict 

DICT:2 root 
      |_dict [A] 
       | 
       sub dict... 

Желаемая:

DICT:1 root 
     |_main dict 
        |_dict [A] 
         | 
         sub dict.... 

В любое время я пытаюсь добавить "Dict: 2" до "ДИКТ: 1" переписывает основной Dict. Оставив меня:

DICT:1 root 
      |_dict [A] 
       | 
       sub dict... 

Я пробовал много много вещей, в том числе:

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init]; 

[myDict setObject:@"mainDict" forKey:@"mainDict"]; 
[myDict setObject:@"dictA" forKey:@"mainDict"]; 

также попытался:

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init]; 

[myDict addEntriesFromDictionary:dictA]; 

NSMutableDictionary *moarDict = [myDict objectForKey:@"mainDict"]; 
[moarDict addEntriesFromDictionary:dictA]; 

и:

moarDict = [dictA mutableCopy]; 

тьфу! NSMutableDictionary должен ненавидеть меня, потому что, без сомнения, я его ненавижу.

+0

Там не секрет. NSMutableDictionary - объект Objective-C и может быть вставлен в другой словарь или массив, как и любой другой объект. –

+0

'[myDict setObject: @" mainDict "forKey: @" mainDict "]; [myDict setObject: @" dictA "forKey: @" mainDict "];' устанавливает запись «mainDict» в myDict, чтобы указать на строку ' @ "mainDict" ', а затем сразу же перезаписываем это строкой' @ "dictA". На картинке нет даже второго словаря, просто строки. –

+0

Ваша первая попытка, вероятно, приведет вас к совершенно неправильной дорожке. @ "dictA" - это NSString *, содержащий строку "dictA". Таким образом, второй оператор setObject хранит строку с содержимым «dictA» под ключом «mainDict». Вероятно, вы захотели сохранить объекты mainDict или dictA. – gnasher729

ответ

1

Попробуйте это:

NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init]; 
NSMutableDictionary *mainDict = [[NSMutableDictionary alloc] init]; 
[myDict setObject:mainDict forKey:@"mainDict"]; 
[myDict[@"mainDict"] setObject:dictA" forKey:@"dictA"]; 

Это приводит к

myDict 
    | mainDict 
      | dictA 
       | sub dict 
Смежные вопросы