0

我让 CoreData 存储了一个对象,它的属性字段“description”之一是文本描述。eg 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 而不是 contains,beginswith 似乎不起作用。另外,我不知道用户可以输入多少个单词,所以很难通过 words[0], words[1]...等来形成上面的谓词。

谢谢

4

1 回答 1

0

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

于 2012-11-12T15:46:20.020 回答