CoreData には、テキストの説明である属性フィールド「説明」の 1 つを持つオブジェクトが格納されています。例: 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];
}
上記のコードはちょっと機能しますが、contains の代わりに beginwith を使用したいのですが、beginwith が機能していないようです。また、ユーザーが入力できる単語数がわからないため、words[0]、words[1]...などを実行して上記の述語を形成するのは困難です。
ありがとう