저는 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없이 기존 쿼리를 필터링 할 수있는 방법이 있나요입니까?
모든 의견을 크게 높이세요!
답장을 보내 주셔서 감사합니다. 동영상은 매우 도움이되었지만 제안 사항 중 일부를 구현하려고합니다. setFetchBatchSize를 50으로 설정하려고했지만 악기에서 실행할 때 여전히 20k 페치가 발생합니다. 그 이유가 확실하지 않습니다. – Yan