2012-05-28 110 views
0

我使用BenPeves的HTMLParser。它工作的很好,但唯一的問題是我不能把輸出放在UITableView中。任何人都可以告訴我這段代碼有什麼問題? .................................................. .................................解析結果在UITableView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Do any additional setup after loading the view, typically from a nib. 

    NSError *error = nil; 
    NSURL *url=[[NSURL alloc] initWithString:@"http://website.com/"]; 
    NSString *strin=[[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 

    HTMLParser *parser = [[HTMLParser alloc] initWithString:strin error:&error]; 

    if (error) { 
     NSLog(@"Error: %@", error); 
     return; 
    } 

    HTMLNode *bodyNode = [parser body]; 
    NSArray *divNodes = [bodyNode findChildTags:@"div"]; 

    for (HTMLNode *inputNode in divNodes) { 
     if ([[inputNode getAttributeNamed:@"class"] isEqualToString:@"views-field-title"]) { 
      NSLog(@"%@", [inputNode allContents]); 

      listData = [[NSArray alloc] initWithObjects:[inputNode allContents], nil]; 
     } 
    }  
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [self.listData count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SimpleTableIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:SimpleTableIdentifier]; 
    } 

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

    return cell; 
} 

@end 
+0

你可以作爲您要發生的事情更清楚一點?你想如何在表格中呈現HTML數據? – 2012-05-29 13:13:37

+0

我想要在UITableView中有一個事件列表,但tableview只顯示數組中的最後一個。我把[inputNode allContents]當作一個數組並且試圖把它放在「cell.textLabel.text = [listData objectAtIndex:row]」中。在控制檯中,它向我顯示事件列表,但我只看到單元格中的最後一個事件。我可能會錯過一些東西。不知道是什麼... – Benjamen

回答

0

您每次發現時都會重新初始化數組一個新元素。我認爲你需要移動

listData = [[NSArray alloc] initWithObjects:[inputNode allContents], nil];

外面的循環,並更改爲

listData = [[NSMutableArray alloc] init];

listData應該是一個NSMutableArray這樣你就可以添加數據。你也需要在你的變量定義中改變它。

那麼你的循環中,使用[listData addObject:[inputNode allContents]];

+0

它的工作!非常感謝。 – Benjamen

+0

@Benjamen優秀。聽到那個消息很開心! :) –