Я хотел бы, чтобы пользователь мог просматривать табличный вид шекспировских монологов, чтобы найти тот, который им больше всего нужен.filterContentForSearchText для нескольких свойств объекта одновременно
Например, есть персонаж по имени Хелена в «All's Well That Ends Well», но есть еще один персонаж по имени Хелена в «Сон в летнюю ночь». Я хотел бы, чтобы пользователь мог ввести имя символа и имя воспроизведения в той же строке поиска, чтобы показать их желаемые результаты.
Например: поисковый запрос «helena midsummer» должен только включите монологи, на которых говорит Хелена в «Сон в летнюю ночь».
В настоящее время при поиске «helena»: результаты показывают монологи из «All's Well That End Well» и «Сон в летнюю ночь».
Но при поиске «helena midsummer» или даже просто «helena»: результатов не найдено.
Как разрешить filterContentForSearchText игнорировать все пробелы и в то же время смотреть, соответствует ли какой-либо аспект поискового запроса какой-либо части монолога, будь то имя автора, текст, название, символ и т. Д. .?
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSArray* words = [searchText componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceCharacterSet]];
searchText = [words componentsJoinedByString:@""];
NSPredicate *p0 = [NSPredicate predicateWithFormat:@"title contains[cd] %@", searchText];
NSPredicate *p1 = [NSPredicate predicateWithFormat:@"authorFirst contains[cd] %@", searchText];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"authorLast contains[cd] %@", searchText];
NSPredicate *p3 = [NSPredicate predicateWithFormat:@"text contains[cd] %@", searchText];
NSPredicate *p4 = [NSPredicate predicateWithFormat:@"gender contains[cd] %@", searchText];
NSPredicate *p5 = [NSPredicate predicateWithFormat:@"tone contains[cd] %@", searchText];
NSPredicate *p6 = [NSPredicate predicateWithFormat:@"period contains[cd] %@", searchText];
NSPredicate *p7 = [NSPredicate predicateWithFormat:@"age contains[cd] %@", searchText];
NSPredicate *p8 = [NSPredicate predicateWithFormat:@"length contains[cd] %@", searchText];
NSPredicate *p9 = [NSPredicate predicateWithFormat:@"notes contains[cd] %@", searchText];
NSPredicate *p10 = [NSPredicate predicateWithFormat:@"tags contains[cd] %@", searchText];
NSPredicate *p11 = [NSPredicate predicateWithFormat:@"character contains[cd] %@", searchText];
NSPredicate *predicateAll = [NSCompoundPredicate orPredicateWithSubpredicates:@[p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11]];
searchResults = [monologuesArray filteredArrayUsingPredicate:predicateAll];
}