2012-04-24 2 views
1

저는 10k +에서 tableview를 보여주고 싶은 앱에서 작동하고 있습니다. cs193p에서 fetchedresultcontroller를 사용하고 있으며 잘 작동합니다. 로드 및 스크롤이 매우 빠릅니다. 각 편지로 검색 할 수 있기를 바랍니다.
검색 막대와 대리자를 설정하고 검색 창 textdidchange 메서드가 각 문자와 함께 fetchresults 컨트롤러를 다시로드합니다. 그것은 작동하지만 지연과 함께 어쨌든 그것을 빨리 만들 수 있습니다. 이 내 textdidchange 방법큰 코어 데이터 세트를 사용하여 더 빠른 검색을 구현하는 방법

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 

//NSLog(@"%@",searchText); 
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"People"]; 
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"fullname" ascending:YES]]; 
[NSFetchedResultsController deleteCacheWithName:@"peopleCache"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstname contains[c] %@)",searchText]; 
request.predicate = predicate; 

self.fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:self.peopleDatabase.managedObjectContext sectionNameKeyPath:nil cacheName:@"actorCache"]; 

}

실제로 데이터를 refetching없이 기존 쿼리를 필터링 할 수있는 방법이 있나요입니까?

모든 의견을 크게 높이세요!

답변

0

프리디 케이트로 기존 배열을 검색 할 수는 있지만 검색하는 모든 필드에 문제가있을 수 있습니다. 응용 프로그램에 따라 문제가 발생할 수 있습니다 (예 : 느리고 메모리 사용량이 많음). 그건 그냥 refetching).

1

텍스트 검색을 최적화하기위한 트릭은 "Optimizing Core Data Performance on iPhone OS"WWDC 세션에서 언급됩니다.

+0

답장을 보내 주셔서 감사합니다. 동영상은 매우 도움이되었지만 제안 사항 중 일부를 구현하려고합니다. setFetchBatchSize를 50으로 설정하려고했지만 악기에서 실행할 때 여전히 20k 페치가 발생합니다. 그 이유가 확실하지 않습니다. – Yan

관련 문제