私は自分のアプリケーションにUISearhBarControllerを持っています。現在、オンラインデータベースを検索していますが、代わりにコアデータデータベースを検索するように変更しています。 ITSは現在、このコードを使用:NSFetchedResultsControllerを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;
}
だから私はすでにコアデータにデータベースを設定している、私はそれに検索/ NSFetchedResultsコントローラをフックアップする必要があります。そうする簡単な方法は?
私は同意しません。述語を変更することは、「それを行うための推奨された方法ではありません」と言うのはどこですか? 'NSFetchRequest'述部を更新し、新しいフェッチを実行することがより簡単できれいです。複数の 'NSFetchedResultsControllers'を持つことは理にかなっていません。 – gschandler
データセットが変更されておらず、述語だけがある場合、1つのFRCがうまく動作するという、2つの異なるデータセットが関係していると思います。 –
シンプルで効率的なソリューション! – Giovanni