NS谓词 - 以任何顺序搜索单词



我让 CoreData 存储一个对象,其中包含其属性字段"description"之一,这是一个文本描述。 例如描述 = @" 意外造成的严重头部创伤";

我想找到 NSPedicate 以任何顺序搜索此列,并且按单词而不是确切的短语搜索此列,例如:如果我搜索"事故创伤严重",我想得到上面的字符串。

-(void)Fetch(){
.......
NSArray *words = [query componentsSeparatedByString:@" "];
req.predicate = [NSPredicate predicateWithFormat:@"description contains[cd] %@ AND description contains[cd] %@ ...",words[0],words[1],[words[2],...];
.....
//execute fetchRequest
//return NSFetchedResultsController;
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
 {
  [self Fetch];
  [self.tableView reloadData];
  }

上面的代码有点有效,但我想使用 beginwith 而不是包含,beginswith 似乎不起作用。另外,我不知道用户可以输入多少个单词,所以很难通过做单词[0],单词[1]来形成上面的谓词......等。

谢谢

您可以将句子拆分为标记(单词,或者可能仅相关单词)并创建不同的实体(如关键字)。这样,您的模型将具有这些关键字的数组。然后,可以执行查询以查找与所有令牌匹配的所有这些模型或至少一个令牌(但要执行搜索)。

最新更新