Tengo un UISearhBarController en mi aplicación. Actualmente busca una base de datos en línea, pero la cambio para buscar en una base de datos central. Su momento de utilizar este código:Usando NSFetchedResultsController para con UISearchBar
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if (self.billingSearchBar == searchBar) {
[self.billingSearchController filterResultsUsingString:searchText];
}
}
- (void)filterResultsUsingString:(NSString *)filterString
{
self.billingSearchText = filterString;
NSArray *billing_codes = [self billingSearch:self.billingSearchText searchType:self.billingSearchCategory];
self.displayedBillingSearch = billing_codes;
self.billingSearch = billing_codes;
[self.tableView reloadData];
}
-(NSMutableArray*)billingSearch:(NSString*)searchString searchType:(NSString*)searchType
{
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/server/20111115/60b88126/billing_search/", [self getHost]]];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:searchString forKey:@"query"];
[request setPostValue:searchType forKey:@"category"];
[request startSynchronous];
NSError *error = [request error];
NSString *responseString;
if (!error) {
responseString = [request responseString];
}
NSMutableArray *search_results = [[NSMutableArray alloc] init];
NSDictionary *responseDictionary = [responseString JSONValue];
for (id key in [responseDictionary valueForKey:@"search_results"]) {
[search_results addObject:key];
}
return search_results;
}
Así que tienen la configuración de base de datos en los datos básicos ya, sólo hay que conectar el controlador de búsqueda/NSFetchedResults a ella. ¿Alguna forma fácil de hacerlo?
No estoy de acuerdo. ¿Dónde dice que cambiar el predicado es "no la forma recomendada de hacerlo"? Más fácil y limpio para actualizar el predicado 'NSFetchRequest' y realizar una nueva búsqueda. Tener múltiples 'NSFetchedResultsControllers' no tiene sentido. – gschandler
Tiene razón, estaba pensando cuando hay dos conjuntos de datos distintos involucrados, cuando el conjunto de datos no está cambiando y solo el predicado es, un FRC funcionará bien. –
¡Solución simple y eficiente! – Giovanni