0
我有CoreData存储一个对象,其属性字段为“描述”,它是文本描述。例如描述= @“严重的意外事故引起的头部创伤”;NSpredicate - 以任意顺序搜索单词
我想找到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]等形成上述谓词。
感谢
我不太关注。所以,现在我有一个对象(ID,描述,颜色,年龄,身高......)。说明字段是我感兴趣的搜索内容。你的意思是建立另一个实体'KeyWord'来索引描述字段中的每个单词吗?这是我经历的9MB XML文件。谢谢 – SMA2012
是的,这就是我所建议的。任何全文引擎都会创建关键字来匹配如果你仍然想要使用你的方法,可以看一下NSCompounPredicate来创建几个不同的谓词,然后用AND或者OR来合并它们 – LocoMike