Добавление NSArrays в NSDictionary - PullRequest
       2

Добавление NSArrays в NSDictionary

1 голос
/ 11 февраля 2011

Я анализирую XML-файл в формате:

** ПРИМЕЧАНИЕ. Это очень упрощенная версия XML. Всего 11 отделов, а 87 отделов всего

<division>
    <name> Sciences </name>
    <departments>

        <department>
            <name> Computer Science </name>
        </department>

        <department>
            <name> Biology </name>
        </department>

        <department>
            <name> Chemistry </name>
        </department>

    </department>
</division>

То, что я надеюсь сделать, это отобразить эту информацию в UITableView с названиями отделов в качестве разделов и названиями отделов в каждом соответствующем разделе.

У меня есть NSDictionary под названием DivisionDict, который я хочу хранить NSArrays для каждого подразделения; содержащий отделы. У меня также есть NSMutableArray с именем DepartmentArray, который содержит каждый из отделов. Итак, по сути, я хочу, чтобы DivisionDict был заполнен DepartmentArrays.

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

if(node_divisions)
{
    node_division = [TBXML childElementNamed:@"division" parentElement:node_divisions]; 

    while (node_division) 
    {
        node_divisionName = [TBXML childElementNamed:@"name" parentElement:node_division];];
        node_departments = [TBXML childElementNamed:@"departments" parentElement:node_division];
        node_department = [TBXML childElementNamed:@"department" parentElement:node_departments];
        divisionName = [TBXML textForElement:node_divisionName];
        while(node_department)
        {
            node_departmentName = [TBXML childElementNamed:@"name" parentElement:node_department];
            departmentName = [TBXML textForElement:node_departmentName];
            //add the department name to the array
            [departmentArray addObject:departmentName];

            node_department = node_department->nextSibling;
        }
        //add the departmentArray to the dictionary, using the division name as the key
        [divisionDict setObject:departmentArray forKey:divisionName];;
        node_division = node_division->nextSibling;
    }
}

Любая помощь очень ценится !!! Я знаю, что-то простое, я, наверное, скучаю, но я смотрю на это слишком много часов и просто не вижу этого. Если вам нужна какая-либо другая информация, просто дайте мне знать, я попытался объяснить все подробно.

Кроме того, вот картинка, которая, надеюсь, помогает показать то, что я пытаюсь описать: http://i.stack.imgur.com/a9nSb.png

1 Ответ

2 голосов
/ 11 февраля 2011

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

while (node_division) 
{
    departmentArray = [NSMutableArray array]; //add this line
...