从数据库中获取记录时显示空表视图

Posted

技术标签:

【中文标题】从数据库中获取记录时显示空表视图【英文标题】:show empty tableview while fetching records from database 【发布时间】:2013-04-17 14:27:15 【问题描述】:

我有一个表视图,在-(void)tableView: didSelectRowAtIndexPath: 上,我正在从 sqlite 数据库中获取记录并显示在另一个 detailViewController 的表视图上。获取记录时 UI 卡住了。我必须显示 detailViewController 的空 tableView 在点击带有活动指示器的行,直到所有记录都没有从数据库中获取。但问题是当我调用函数从 -(void)viewDidLoad 从数据库中获取记录时,主运行循环被阻塞出现 detailViewController 和黑屏。 我在某处读过在后台线程上执行数据库操作不好。所以我不能在后台线程上执行获取操作。 解决此问题的最佳方法是什么?

detailViewController的视图更新时如何显示记录。有什么好的设计模式或者在后台线程上执行数据库操作是否正确?在viewDidAppear中进行诸如数据库操作之类的繁重操作也可以吗?

提前致谢

【问题讨论】:

【参考方案1】:

viewWillAppear方法中从数据库中获取记录并将其放入NSMutableArray并使用NSLog(@"%@",myMutableArr);进行检查,如果您获得正确的数据然后放入UITableView

参考This Tutorial 和This is official document.

【讨论】:

【参考方案2】:

我认为在不同的线程上加载数据库不是问题。但是如果你想用你的数据库结果更新表视图,使用方法 performSelectorOnMainThread。由于 UI 更新应该始终在主线程中。

表视图是否需要来自数据库的结果?还是只针对detailView? 如果只针对detailView,为什么不在detailView出现时查询数据库呢?

【讨论】:

是的 detailViewController 用这些结果加载它的 tableview 然后您可以在单独的线程中查询数据库,在viewDidAppear和unload方法中管理线程,并在您读取部分或全部数据时不时更新tableview。我做到了,它在我的应用程序itunes.apple.com/app/id483162196 中完美运行。

以上是关于从数据库中获取记录时显示空表视图的主要内容,如果未能解决你的问题,请参考以下文章

单击搜索结果时显示空的详细信息视图

尝试显示从服务器对象检索到的值时显示空值

DataGridView 绑定到已键入的 DataTable 时显示空单元格

JSON NSDictionary 在输出到日志时显示空描述

蜂巢表在显示数据时显示空输出

Objective-C:视图显示空表,因为 API 需要时间从服务器获取