-(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 も使用していますが、接続ルートの経験を積むのはいいことです。
2 番目のチャンクは、動作していないように見える結果 UITextView に結果を追加しようとしている私です。NeedsDisplay を設定する必要はありません。コードでビューを描画するときだけだと思いました。提案をありがとう。