我正在使用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
答案 0 :(得分:0)
每次找到新元素时,都会重新初始化数组。我想你需要搬家
listData = [[NSArray alloc] initWithObjects:[inputNode allContents], nil];
在循环之外并将其更改为
listData = [[NSMutableArray alloc] init];
listData
应该是NSMutableArray
,因此您可以向其添加数据。您还需要在变量定义中更改它。
然后在循环中使用[listData addObject:[inputNode allContents]];