0

我正在使用 Ben Reeves 的 HTMLParser。它工作得很好,但唯一的问题是我无法将输出放在 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
4

1 回答 1

0

每次找到新元素时,您都会重新初始化数组。我觉得你需要搬家

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

在您的循环之外并将其更改为

listData = [[NSMutableArray alloc] init];

listData应该是一个NSMutableArray,因此您可以向其中添加数据。您还需要在变量定义中更改它。

然后在你的循环中,使用[listData addObject:[inputNode allContents]];

于 2012-05-29T16:00:48.000 回答