Ho un UISearhBarController nella mia app. Cerca attualmente un database online, ma lo sto cambiando per cercare invece un database di dati di base. La sua attualmente utilizzando questo codice:Utilizzo di NSFetchedResultsController 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;
}
così ho la messa a punto del database nei dati di base già, ho solo bisogno di collegare il controller di ricerca/NSFetchedResults ad esso. Qualche modo semplice per farlo?
Non sono d'accordo. Dove dice che cambiare il predicato è "non è il modo consigliato per farlo"? Più facile e più pulito per aggiornare il predicato 'NSFetchRequest' ed eseguire un nuovo recupero. Avere più 'NSFetchedResultsControllers' non ha senso. – gschandler
Si è corretto, stavo pensando a quando sono coinvolti due set di dati distinti, quando il set di dati non sta cambiando e solo il predicato è, un FRC funzionerà correttamente. –
Soluzione semplice ed efficiente! – Giovanni