1

私はcoredataを使用してアプリケーションを構築しています。ほぼ完成しましたが、問題があります。

アプリケーションに検索セクションを配置したい。私は今それをしました、そしてそれは働いています、しかし何か奇妙なものがあり、私は解決できませんでした。

検索ボタンをクリックすると、述語を準備してデータベースを検索し、データをテーブルビューに表示します。

私のデータベースには約18000のエントリがあり、いくつかの単語を検索すると、プロセス終了アプリケーションが希望どおりにテーブルビューを表示した後、アプリケーションがしばらくロックされます。

この長い進歩が行われている間にアクティビティインジケーターなどを配置したいのですが、その間にアプリケーションがロックされているため、できません。

この場合、私は何ができますか?解決策が見つかりませんでした。

あなたの助けをありがとう。

よろしく。

4

1 に答える 1

0

新しいスレッドで検索を開始する必要があります。メインスレッドにはインジケータービューが表示されます(メインスレッドでのみ視覚的な処理を実行できます)。

//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
}
于 2010-07-15T10:53:17.463 に答える