Словарь в словаре (как список) - PullRequest
0 голосов
/ 28 июля 2011

У меня есть plist, который настроен так:

enter image description here

Как видите, у меня есть словарь в словаре: каждый родительский узел имеет дочерние узлы, которые сами по себесловарь с изображениями и значками, связанными с ними.

Часть, в которой я застрял, состоит в том, как превратить это в источник данных для NSOutlineView ..

На данный момент у меня есть это:

NSString *paths = [[NSBundle mainBundle] pathForResource:@"navigationItems" ofType:@"plist"]; 
navigationItems = [[NSMutableDictionary alloc] initWithContentsOfFile:paths];

NSArray *parents = [navigationItems allKeys];

for (NSString *parent in parents) {
    SourceListItem *parentItem = [SourceListItem itemWithTitle:parent identifier:parent];

    NSArray *children = [parent allKeys];

    NSLog(@"%@", children);
}

Затем я собирался сделать цикл for для детей, но проблема в том, что parent является строкой NSString, и вы не можете использовать цикл for для строки NSString ..

Итакчто мне делать?

Большое спасибо

1 Ответ

1 голос
/ 28 июля 2011

Если я правильно читаю ваш код, parent - это ключ для словаря, содержащего дочерние словари в вашем списке.Необходимо получить словарь, на который parent ссылается в navigationItems, прежде чем получить доступ к данным встроенного дочернего словаря.Например:

NSString *paths = [[NSBundle mainBundle] pathForResource:@"navigationItems" ofType:@"plist"]; 
navigationItems = [[NSMutableDictionary alloc] initWithContentsOfFile:paths];

NSArray *parents = [navigationItems allKeys];

for (NSString *parent in parents) {
    SourceListItem *parentItem = [SourceListItem itemWithTitle:parent identifier:parent];

    NSDictionary *parentData = [navigationItems objectForKey:parent];
    NSArray *children = [parentData allKeys];

    NSLog(@"%@", children);
}

Не забудьте получить доступ к данным словаря для каждого из детей таким же образом, когда вы просматриваете их ключи.

...