これが繰り返しである場合は申し訳ありませんが、正直なところ、これを調査するために最善を尽くしましたが、あまり思いつきませんでした.
いくつかの大きな教科書を検索できるようにする iPad リファレンス アプリを作成しています (合計で 3 ~ 4,000 ページになる可能性があります)。これは非常に単純なアイデアです。ユーザーが検索するテキストの任意の組み合わせを選択し、用語を入力すると、アプリはすべてのテキストからそれらの用語を検索し、テーブル ビューでインデックス付けして返します。
ビュー コントローラーには一連のスイッチがあり、その値はメソッドによって NSSet に読み込まれ、検索コントローラーに渡されます。その部分は機能します。
ビューコントローラーがインスタンス化してメソッドを呼び出す SearchController クラスがあります。
-(void)performSearchWithString:(NSString *)searchString andTexts:(NSSet *)texts
{
for (id book in texts) {
if ([book isEqual:kBook1]){
NSError *error = nil;
NSURL *url = [[NSBundle mainBundle] URLForResource:@"neiJing" withExtension:@"txt"];
NSString *text = [NSString stringWithContentsOfURL:url encoding:NSStringEncodingConversionAllowLossy error:&error];
[text enumerateSubstringsInRange:NSMakeRange(0, [text length])
options:NSStringEnumerationByWords
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
NSRange found = [substring rangeOfString:text];
if (found.location != NSNotFound) {
NSLog(@"%@", substring);
} else {
NSLog(@"Not found");
}
}];
}
すべてのテキストのすべての単語を列挙することに成功したようですが、戻り値が見つからないため、「見つかりません」という終わりのないストリームが得られます。
確かにそこにあることがわかっている各テキストにテスト フレーズを挿入しましたが、出てきません。
私はこれについてすべて間違っていると感じています。これが機能したとしても、使用可能なアプリにはパフォーマンスへの影響が大きすぎる可能性があります...ブロックについても頭を抱えようとしています。大量のテキストを検索して結果を選択するための既製のソリューションが見つかりませんでした。誰かが私が適応できるオープンソース ライブラリへのヒントや参照を持っている場合、私は非常に感謝しています.