我正在解析XML格式的文件:將NSArrays添加到NSDictionary
**注意:這是一個非常簡化的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這個信息,與司名稱爲章節,而且每個相應的部分中的部門名稱。
我有一個名爲divisionDict的NSDictionary,我想爲每個部門存儲NSArrays;包含部門。我也有一個名爲departmentArray的NSMutableArray,它包含每個部門。所以基本上,我想要一個充滿departmentArrays的divisionDict。
這裏是我解析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
謝謝!我知道我每次都需要創建一個新陣列,但是我的腦袋如此油炸,我想不出來...... – RyanG
@Ryan Garchinsky:你們在接受答案時保持upvoting的習慣,如果它真的幫助了你。 – EmptyStack
檢查你正在使用divisionArray的其他地方。要麼你將字符串分配爲divisionArray,要麼數組被釋放了太多次。也許當你創建divisionArray時,你正在使用類似[NSMutableArray arrayWithCapacity:],而不保留它? –