2011-11-07 56 views
0

我使用下面的加載圖標從一個XML文件中的一個NSMutableArray:NSMutableArray中不加入的所有項目,剛剛過去的一個 - iPhone/IOS/Xcode的

NSArray *iconItems = [doc nodesForXPath:kName_icon error:nil];//Root node 
    for (CXMLElement *iconItem in iconItems) 
    { 

     NSArray *iconTempArray = [iconItem elementsForName:kName_url]; 
     for(CXMLElement *urlTemp in iconTempArray) 
     { 
      arryTableAllIcons = [[NSMutableArray alloc] init]; 
      [arryTableAllIcons addObject:[NSString stringWithFormat:@"%@", urlTemp.stringValue]]; 

      NSLog(@"Icon Found %@",urlTemp.stringValue); 

     break; 
     } 

我想通過以下在我的表顯示此:(這是在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

cell.textLabel.text = [arryTableAllIcons objectAtIndex:indexPath.row]; 

計數似乎工作,因爲我有細胞數正確,但發現空單元格中的表1與最後一個圖標

The count is just: `return [arryTableAllIcons count];` 

而我的NSLog帶回正確的文本

2011-11-07 10:30:23.692 Del Search[2791:f203] Icon Found guideDogs_off.png 
2011-11-07 10:30:23.692 Del Search[2791:f203] Icon Found WheelchairAssist_off.png 
2011-11-07 10:30:23.739 Del Search[2791:f203] Icon Found walk_off.png 
2011-11-07 10:30:23.740 Del Search[2791:f203] Icon Found DisabledWc_off.png 
2011-11-07 10:30:23.741 Del Search[2791:f203] Icon Found hearingaid_off.png 
2011-11-07 10:30:23.741 Del Search[2791:f203] Icon Found loop_off.png 
2011-11-07 10:30:23.742 Del Search[2791:f203] Icon Found carpark_off.png 
2011-11-07 10:30:23.742 Del Search[2791:f203] Icon Found dropcounter_off.png 
2011-11-07 10:30:23.743 Del Search[2791:f203] Icon Found staff_off.png 
2011-11-07 10:30:23.743 Del Search[2791:f203] Icon Found Buggy_off.png 

所以我必須僅僅是添加陣列錯了!

This is what's returned

任何幫助將是非常讚賞

回答

2

我認爲問題是,你聲明「對於」循環內的數組。這樣你每次實例化它的循環重複

+1

你這個小天才,謝謝你。另一件事,現在它正在工作,它底部顯示3個空白單元格?任何想法爲什麼 – TMB87

+0

所以投我:) –

+0

我現在看看你的代碼.....你NSLogging的返回 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)部分? –

3

你不斷創造新的空NSMutableArrays

for(CXMLElement *urlTemp in iconTempArray) 
    { 
     arryTableAllIcons = [[NSMutableArray alloc] init]; 
     [arryTableAllIcons addObject:[NSString stringWithFormat:@"%@", urlTemp.stringValue]]; 

     NSLog(@"Icon Found %@",urlTemp.stringValue); 

    break; 
    } 

無論是分配/初始化arryTableAllIcons提前,或檢查它不是零

for(CXMLElement *urlTemp in iconTempArray) 
    { 
     if (!arryTableAllIcons) 
      arryTableAllIcons = [[NSMutableArray alloc] init]; 
     [arryTableAllIcons addObject:[NSString stringWithFormat:@"%@", urlTemp.stringValue]]; 

     NSLog(@"Icon Found %@",urlTemp.stringValue); 

    break; 
    } 

也是break語句將退出對第一通環路封閉的,所以我認爲它不應該存在

for(CXMLElement *urlTemp in iconTempArray) 
    { 
     if (!arryTableAllIcons) 
      arryTableAllIcons = [[NSMutableArray alloc] init]; 
     [arryTableAllIcons addObject:[NSString stringWithFormat:@"%@", urlTemp.stringValue]]; 

     NSLog(@"Icon Found %@",urlTemp.stringValue); 
    } 
+0

+1,你打敗了我。 – LouwHopley

+0

非常感謝這位伴侶,你能告訴我爲什麼它現在在底部創建3個空白單元格嗎?這很奇怪 – TMB87

+0

很難告訴你給的信息,試着在for循環中放一個斷點,看看它爲什麼會創建額外的空項目。 – jbat100

1

在這部分代碼:

for(CXMLElement *urlTemp in iconTempArray) 
{ 
    arryTableAllIcons = [[NSMutableArray alloc] init]; 
    [arryTableAllIcons addObject:[NSString stringWithFormat:@"%@", urlTemp.stringValue]]; 
    NSLog(@"Icon Found %@",urlTemp.stringValue); 
    break; 
} 

您是重新init上通過for循環每一步-ing新arryTableAllIcons

除了創建內存泄漏,您還在創建大量新陣列。最後一個實例是具有最後一個項目的實例。

將循環外部的alloc-init語句完全移出(完全可能在方法外部,並且移至類init),並確保您在使用它之後的某個時刻release

相關問題