-(NSMutableArray *)titlesFromString:(NSString *) pageData
{
NSMutableArray *foundTitles=[[NSMutableArray alloc] init];
NSScanner *scaningPage = [NSScanner scannerWithString:pageData];
NSString *title;
for (int i =0;i<4;i++) {
[scaningPage scanUpToString:@"class='topic_title" intoString:NULL];
[scaningPage scanUpToString:@">" intoString:NULL];
scaningPage.scanLocation++;
[scaningPage scanUpToString:@"</a></h4>" intoString:&title];
[foundTitles addObject:title];
}
status.text = [[NSNumber numberWithInt:[foundTitles count]] stringValue];
for (NSString *titlesLife in foundTitles){
[results.text stringByAppendingString:@"\n"];
[results.text stringByAppendingString:titlesLife];
}
return(nil);
}现在,我返回nil,直到它正常工作。我从connectionDidFinishLoading调用这个方法。
在文档中,他们使用while循环while (theScanner isAtEnd == NO){},但他们也在常规数据集上执行此操作,其中最后扫描的内容位于字符串的末尾,所以我猜这就是我遇到边界问题的原因。我也见过RegexKit框架,它可能比解析器工作得更好。在我弄清楚while循环之前,我只有一个for循环来获取一些信息。
我还搞不懂,为什么一旦把'>‘扫描成null,我就需要增加扫描器的位置,否则我最终会得到像">现在在唱什么歌?“这样的字符串。
第二个部分是我试图将我的结果添加到results UITextView中,但这似乎不起作用。我不应该必须setNeedsDisplay,对吗?我以为只有在代码中绘制视图时才会出现这种情况。谢谢你的建议。
发布于 2012-07-27 05:19:47
第2部分:
您正在将额外的文本添加到标签的文本中,然后将其丢弃:)
尝试如下所示:
results.text = [results.text stringByAppendingString:@"\n"];第一部分要复杂得多。
处理超文本标记语言是出了名的棘手问题:(然而,对于您的问题here on stack overflow,有一个很好的解决方案。我从来没有使用过这个库,但+61票可能是一个相当好的迹象:)
https://stackoverflow.com/questions/11677343
复制相似问题