搜索显示控制器Coredata Search 在加载时锁定应用程序,我该怎么办?

发布于 2024-08-23 11:22:22 字数 337 浏览 12 评论 0原文

我正在使用 coredata 构建一个应用程序。它即将完成,但我有一个问题。

我想在我的应用程序中添加一个搜索部分。我现在做到了并且它正在工作,但是有一些奇怪的事情我无法解决。

单击搜索按钮时,我正在准备谓词并搜索数据库,并在表格视图上显示数据。

我的数据库中有大约 18000 个条目,当搜索一些单词时,在进程结束应用程序按我想要的方式显示我的表格视图之后,应用程序被锁定一段时间。

我想在完成这么长的进度时放置一个活动指示器或类似的东西,但我不能,因为应用程序当时被锁定。

在这种情况下我能做什么?我找不到任何解决方案。

感谢您的帮助。

问候。

I am building an application with coredata. Its nearly finished but i have a problem.

I want to put a search section on my application. I did it now and it is working, but there is something weird and i could not solve.

When clicked on the search button, i am preparing my Predicates and search my database, and show the data on tableview.

There are about 18000 entries on my database and when searching some words, the application is getting locked for a while, after the proccess end application shows my tableview as i want.

I want to put an activity indicator or something like that while this long progress is being done but i cant, because the application is being locked in that time.

What can i do in this case? I could not find any solution.

Thanks for your helps.

Regards.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

A君 2024-08-30 11:22:22

您应该在新线程中开始搜索。而主线程将显示您的指标视图(您只能在主线程中执行视觉操作)。

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

you should start search in a new thread. while the main thread will show your indicator view (you can do visual stuff only in a main thread).

//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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文