我让CoreData存储一个对象,其中一个属性字段为“description”,这是一个文本描述。例如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,beginwith似乎不起作用。 另外,我不知道用户可以键入多少单词,因此很难通过单词[0],单词[1]等来形成上面的谓词。
由于
答案 0 :(得分:0)
你可以将你的句子分成标记(单词,或者可能只是相关单词)并创建不同的实体(如KeyWord)。这样,您的模型将包含这些关键字的数组。然后,您可以执行查询以查找与所有令牌匹配的所有这些模型或至少一个(但是您想要进行搜索)。