2010-05-12 4 views
2

사용자가 각 문자를 입력 한 후 performFetch:으로 페치하여 유형별 검색 (단일 속성에서 텍스트 검색)을 구현했습니다. performFetch:은 키보드가 정지하지 않도록 백그라운드 스레드에서 실행 중입니다.코어 데이터/NSFetchedResultsController를 사용한 실제 검색

그러나 입력하는 동안 많은 쓸모없는 가져 오기가 시작됩니다. NSOperationQueue는 옵션 일 수도 있지만, 꽤 일반적인 검색 동작을위한 다른 접근법이 있는지 궁금합니다.

가져 오기가 완료되고 테이블 가져 오기가 이전 가져 오기로 업데이트되어 새로운 가져 오기를 시작하는 것이 가장 좋은 방법은 무엇입니까?

답변

4

각 글자 뒤에 코어 데이터 스택에서 패치를 수행 할 필요가 없습니다. 대신 인스턴스에 이미있는 fetchedObjects에 대해 NSPredicate를 실행할 수 있습니다. 이렇게하면 이미 메모리에있는 결과를 필터링하기 만하면 성능 문제가 제거되므로 백그라운드 스레드에서 페치를 수행 할 필요가 없습니다.

각 글자를 입력 할 때 NSPredcate을 조정하면 결과가 더 필터링됩니다.

+0

감사합니다. 나는 'fetchedObjects'에서 NSPredicate를 실행하는 접근 방식을 시도 할 것입니다. – Sney

+0

문자를 삭제할 때 제대로 작동하지 않습니다. – Raj

+0

삭제가 감지되면 해당 조건자가 예에서 시작됩니다. –

관련 문제