Dies ist meine UISearchDisplayController
, die funktioniert, wenn ich Suche ausführen und das Ergebnis mit passenden Startalphabet zurückgeben.
Was ich jedoch tun soll, ist das Aktivieren der Suche nach Text enthält Zeichenfolge.
Zum Beispiel, wenn ich Daten chocolate chip
und dark chocolate
habe, wenn ich chocolate
auf der Suchleiste eintippe, möchte ich beide Ergebnisse zurückgeben.
Der einzige folgenden Code chocolate chip
zurück, aber nicht dark chocolate
:Enable UISearchDisplayController zu suchen Text enthält Zeichenfolge
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];
}];
}
}
Dies ist die 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);
});
}
ist ich die *SQL
-"SELECT id,title FROM entries WHERE title LIKE ? '%' || '%';"
zu ändern versucht. Aber das funktioniert nicht.
Jeder Vorschlag wird geschätzt. Vielen Dank im Voraus.
Danke, aber ich 'Verwendung von nicht deklarierter Bezeichner‚str'' und 'unerwartete Schnittstellennamen‚NSString‘: erwartet expression' Fehler. – user2872856
Es ist Arbeit. Vielen Dank! – user2872856