-(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循环来获取一些信息。我在想我需要检查是否存在另一个元素,如果没有,则进行扫描,以免扫描仪超出范围。
我也很困惑,为什么我需要在将“>”扫描为空时增加扫描仪位置,否则我最终会得到类似“> 现在正在播放什么歌曲?”之类的字符串 当我认为使用 initWithContentsOfUrl 可能更简单时,我也在使用 NSURLConnection 来获取数据,但是获得连接路由的经验很好。
第二块是我试图将我的结果添加到结果 UITextView 这似乎不起作用。我不应该 setNeedsDisplay 应该吗?我以为那只是在代码中绘制视图时。感谢您的任何建议。