2011-02-11 57 views
1

我正在解析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

回答

2

它看起來就像是增加所有部門的每一個部門同一個數組。我想,你只需要在循環創建爲每個部門一個新的數組:

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

謝謝!我知道我每次都需要創建一個新陣列,但是我的腦袋如此油炸,我想不出來...... – RyanG

+0

@Ryan Garchinsky:你們在接受答案時保持upvoting的習慣,如果它真的幫助了你。 – EmptyStack

+0

檢查你正在使用divisionArray的其他地方。要麼你將字符串分配爲divisionArray,要麼數組被釋放了太多次。也許當你創建divisionArray時,你正在使用類似[NSMutableArray arrayWithCapacity:],而不保留它? –

相關問題