嗨,我有一个填充 tableview 的主数组,并且我有一个用于搜索结果的过滤数组。使用以下方法,这两个都可以正常工作。除了此代码块下的以下问题外,我的 tableview 和搜索显示数组运行良好。
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
[self.filteredListContent removeAllObjects]; // First clear the filtered array.
for (product *new in parserData)
{
//Description scope
if ([scope isEqualToString:@"Description"])
{
NSRange result = [new.description rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if (result.location != NSNotFound)
{
[self.filteredListContent addObject:new];
}
}
//Product scope
if ([scope isEqualToString:@"Product"])
{
NSRange result = [new.item rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if (result.location != NSNotFound)
{
[self.filteredListContent addObject:new];
}
}
}
}
我想要达到的就是这个。我在主阵列中有一个名为LMD-2451 TD Professional 3D LCD Monitor的项目。我可以搜索TD Professional、TD Pro、TD并使用任何情况返回上述正确的项目。但是,如果我搜索Pro TD,它不会显示任何结果。我面临的问题是用户可能不知道产品标题或描述的顺序?所以我需要实现一些可以在逻辑上做到这一点的东西。我真的不知道该怎么做。
以供参考
NSMutableArray *parserData; // 完成主完整数组 NSMutableArray *filteredListContent; // 搜索结果数组
任何建议将不胜感激。