0

私はBenReevesの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];

listDataNSMutableArrayデータを追加できるようにする必要があります。変数定義でもこれを変更する必要があります。

次に、ループ内で、[listData addObject:[inputNode allContents]];

于 2012-05-29T16:00:48.000 に答える