从数据库中获取记录时显示空tableview

时间:2013-04-17 14:27:15

标签: iphone ios objective-c ipad ios6

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

如何在detailViewController的视图更新时显示记录。是否有任何好的designPattern或在后台线程上执行数据库操作是否正确?在viewDidAppear中执行大量操作(如数据库操作)也没关系?

提前致谢

2 个答案:

答案 0 :(得分:0)

viewWillAppear 方法中从数据库中提取记录并将其放入NSMutableArray并使用NSLog(@"%@",myMutableArr);检查,如果您获得了正确的数据,则将其放在{{1}上}}

参考This Tutorial以及This is official document.

答案 1 :(得分:0)

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

数据库的结果是否需要表视图?或仅用于detailView? 如果它仅用于detailView,为什么不在detailView出现时查询数据库?