Я создаю строку поиска, которая должна вести себя как панель поиска контактов iPhone. В настоящее время она частично. вот мой кодКак сделать панель поиска как приложение для iPhone contact Или панель поиска, которая обрабатывает более одного неполного kewords
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
NSRange whiteSpaceRange = [result rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];
if (whiteSpaceRange.location != NSNotFound)
{
NSString * stringAfterSpace = [result substringFromIndex:whiteSpaceRange.location];
NSString * stringBeforeSpace= [result substringToIndex:whiteSpaceRange.location];
NSPredicate *predicateForAfterSpace=[NSPredicate predicateWithFormat:@"catNm CONTAINS[cd] %@",stringAfterSpace];
NSPredicate *predicateForBegining = [NSPredicate predicateWithFormat:@"catNm BEGINSWITH[cd] %@", stringBeforeSpace];
NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicateForBegining, predicateForAfterSpace]];
searchArray = [[dataArray filteredArrayUsingPredicate:compoundPredicate] mutableCopy];
}
else
{
NSPredicate *predicateForBegining = [NSPredicate predicateWithFormat:@"catNm BEGINSWITH[cd] %@", result];
NSString *stringAfterSpace=[NSString stringWithFormat:@" %@",result];
NSPredicate *predicateForAfterSpace=[NSPredicate predicateWithFormat:@"catNm CONTAINS[cd] %@",stringAfterSpace];
NSPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicateForBegining,predicateForAfterSpace]];
searchArray = [[dataArray filteredArrayUsingPredicate:compoundPredicate] mutableCopy];
}
}
главное отличие мой SearchBar обрабатывает одну неполную ключевое слово, но не более чем one.suppose array={{[email protected]"Asus Zenfone 3 Max"},{[email protected]"Asus Zenfone Go}}
если я искать asu zen
или zen ma
то это показывает результат, но если поиск asus zen max
то пойдет не так Все, что я хочу знать, это то, как обрабатывать несколько пробелов в поискеBar