SearchDisplayController & Coredata Search блокирует приложение во время загрузки, что я могу сделать? - PullRequest
1 голос
/ 05 марта 2010

Я создаю приложение с помощью coredata. Это почти закончено, но у меня есть проблема.

Я хочу добавить раздел поиска в свое приложение. Я сделал это сейчас, и это работает, но есть что-то странное, и я не могу решить.

Когда я нажимаю на кнопку поиска, я готовлю свои предикаты, ищу в своей базе данных и показываю данные в виде таблицы.

В моей базе данных около 18000 записей, и при поиске некоторых слов приложение на некоторое время блокируется, после того как приложение конца процесса отображает мою таблицу, как я хочу.

Я хочу поставить индикатор активности или что-то в этом роде, пока идет этот долгий прогресс, но я не могу, потому что в это время приложение блокируется.

Что я могу сделать в этом случае? Я не мог найти решение.

Спасибо за вашу помощь.

Привет.

1 Ответ

0 голосов
/ 15 июля 2010

Вы должны начать поиск в новой теме. в то время как основной поток покажет ваш индикатор (вы можете делать визуальные вещи только в основном потоке).

//make UIIndicatorView visible and start a new thread

[NSThread detachNewThreadSelector:@selector(doSearch) toTarget:self withObject:nil];

-(void) doSearch{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
//do search stuff;
....
// tell your main thread that search is done
[self performSelectorOnMainThread:@selector(searchDone) withObject:nil waitUntilDone:NO];
[pool release]; }
-(void) searchDone{ //hide UIIndicator view
}
...