如果这是重复,我深表歉意,但老实说,我已尽我最大的努力对此进行研究,但并没有想出太多。
我正在制作一个 iPad 参考应用程序,它可以搜索几本大型教科书(可能总共 3-4k 页)。这是一个相当简单的想法:用户可以选择任何文本组合进行搜索,输入他的词条,应用程序将在所有文本中找到这些词条并将它们返回,并在表格视图中进行索引。
视图控制器有一系列开关,它们的值通过方法读取到 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");
}
}];
}
我似乎已经成功地枚举了所有文本中的每个单词,但没有找到返回值,所以我得到了一个永无止境的“未找到”流。
我在每个我知道肯定存在的文本中插入了一个测试短语,但它没有出现。
我有一种感觉,这一切都错了。即使我完成了这项工作,对于可用的应用程序而言,性能影响可能太大了......我仍在尝试将我的头绕在块上。我只是没有找到任何现成的解决方案来搜索大量文本并挑选结果。如果有人对我可能改编的开源库有任何提示或参考,我将不胜感激。