Это мой UISearchDisplayController
, который работает, если я выполняю поиск и возвращаю результат с соответствующим начальным алфавитом.
Однако, что мне делать, это включить поиск текста, содержащего строку.
Например, если у меня есть данные chocolate chip
и dark chocolate
, когда я набираю chocolate
в строке поиска, я хочу вернуть оба результата.
Следующий код возврата только chocolate chip
но не dark chocolate
:Включить UISearchDisplayController для поиска текста содержит строку
self.searchDisplayController = [[[UISearchDisplayController alloc] initWithSearchBar:self.searchBar contentsController:self] autorelease];
self.searchDisplayController.searchResultsDelegate = self;
self.searchDisplayController.searchResultsDataSource = self;
self.searchDisplayController.searchResultsTitle = NSLocalizedString(@"Matches", @"");
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
NSString *text = [searchBar.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([text length]) {
[self.db fetchCompletionListWithString:text callback:^(NSArray *list) {
self.prefixArray = list;
[self.searchDisplayController.searchResultsTableView reloadData];
}];
}
}
Это fetchCompletionListWithString
- (void)_fetchCompletionListWithString:(NSString *)inStr callback:(void(^)(NSArray *))inCallback
{
if (!inStr || ![inStr length]) {
return;
}
const char *SQL = "SELECT id,title FROM entries WHERE title LIKE ? || '%';";
ObjSqliteStatement *statement = [[ObjSqliteStatement alloc] initWithSQL:SQL db:db];
[statement bindText:inStr toColumn:1];
NSMutableArray *list = [NSMutableArray array];
while ([statement step]) {
NSInteger entryID = [statement intFromColumn:0];
NSString *title = [statement textFromColumn:1];
if (entryID) {
[list addObject:@{kMDIdentifierKey:@(entryID), kMDTitleKey:title}];
}
}
[statement release];
dispatch_async(dispatch_get_main_queue(), ^{
inCallback(list);
});
}
Я попытался изменить *SQL
к "SELECT id,title FROM entries WHERE title LIKE ? '%' || '%';"
. Но это не работает.
Любое предложение будет оценено по достоинству. Спасибо заранее.
Спасибо, но я получаю 'использование необъявленного идентификатора«str'' и 'неожиданного имени интерфейса„NSString“: ожидаемые ошибки expression'. – user2872856
Это работа. Спасибо! – user2872856