0

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

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

提前致谢

4

2 回答 2

0

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

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

于 2013-04-17T14:55:59.643 回答
0

在方法中从数据库中获取记录viewWillAppear并将其放入NSMutableArray并检查它NSLog(@"%@",myMutableArr);是否有正确的数据然后放入UITableView

请参阅本教程这也是官方文档。

于 2013-04-17T14:32:25.440 回答