2010-03-04 11 views
1

Je construis une application avec coredata. C'est presque fini mais j'ai un problème.SearchDisplayController & Coredata Search verrouille l'application pendant le chargement, que puis-je faire?

Je veux mettre une section de recherche sur mon application. Je l'ai fait maintenant et ça marche, mais il y a quelque chose de bizarre et je n'ai pas pu le résoudre. Lorsque je clique sur le bouton de recherche, je prépare mes prédicats et recherche ma base de données, et affiche les données sur tableview.

Il ya environ 18000 entrées dans ma base de données et lors de la recherche de certains mots, l'application est verrouillée pendant un certain temps, après que l'application de traitement proccess affiche ma table comme je veux.

Je veux mettre un indicateur d'activité ou quelque chose comme ça pendant que ce long progrès est fait mais je ne peux pas, parce que l'application est verrouillée dans ce temps.

Que puis-je faire dans ce cas? Je n'ai pas trouvé de solution.

Merci pour votre aide.

Cordialement.

Répondre

0

vous devriez commencer la recherche dans un nouveau sujet. tandis que le fil principal montrera votre vue d'indicateur (vous pouvez faire des trucs visuels seulement dans un fil principal).

//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 
}