Iphone 如何使用UISearchBar搜索多个关键字

Iphone 如何使用UISearchBar搜索多个关键字,iphone,uisearchbar,Iphone,Uisearchbar,嗨, 我使用以下代码成功地在arrayTags中执行了搜索,其中arrayTags是每个XML元素的字段数组,名为tag。问题是,比方说,标签有三个词:红、白、蓝。如果我执行一个红色或白色、蓝色或任何包含在标记元素中的搜索,一切都正常。但如果我搜索红白,搜索结果将一无所获。 实际上,仅当我搜索arrayTags中包含的内容时,搜索才会返回结果,而不是非连续词。 你知道我怎样才能解决这个问题吗?非常感谢 - (void)searchBar:(UISearchBar *)searchBar tex

嗨, 我使用以下代码成功地在arrayTags中执行了搜索,其中arrayTags是每个XML元素的字段数组,名为tag。问题是,比方说,标签有三个词:红、白、蓝。如果我执行一个红色或白色、蓝色或任何包含在标记元素中的搜索,一切都正常。但如果我搜索红白,搜索结果将一无所获。 实际上,仅当我搜索arrayTags中包含的内容时,搜索才会返回结果,而不是非连续词。 你知道我怎样才能解决这个问题吗?非常感谢

 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{


     [resultArray removeAllObjects];

     NSString *cellTitle;
     for (cellTitle in arrayTags){

      NSString *stringa = cellTitle;
      NSRange range = [stringa rangeOfString:searchText];

      NSComparisonResult result = [cellTitle compare:searchText options:NSCaseInsensitiveSearch range:range];
      if (result == NSOrderedSame){

       int posizione = [arrayNames indexOfObjectIdenticalTo:cellTitle];

       [result Array addObject:[arrayNames objectAtIndex:posizione]];


      }
     }

     [self.tableView reloadData];
    }

您的问题有两个或三个方面:

1您必须定义,什么是单词分隔符,什么属于您要查找的单词。例如,A,B可以表示,寻找“A”和“B”,或者它意味着寻找“A”和“-B”unDeCar表示空白。 您可能希望像这样分割搜索文本:

NSArray *listItems = [searchText componentsSeparatedByCharactersInSet:
                      [characterSetWithCharactersInString:@", "]];
也许,您希望消除listItems对象中的空白,然后消除listItems中的空对象

2只有在之后,您才能决定如何查找,从阶段1中获得了什么,例如,通过创建一个谓词来查找listItems中的所有对象:

NSPredicate *inPredicate = [NSPredicate predicateWithFormat: @"SELF IN %@",
                           listItems];
NSArray* filteredArray = [arrayTags filteredArrayUsingPredicate:inPredicate];
请注意,此谓词区分大小写,因此请为其他需求创建自己的谓词

3 filteredArray可能应该是视图类的成员,并且是新的tableDataSource。但是,有一些微妙的问题需要解决:空搜索文本、将数据源从过滤内容切换到非过滤内容等