我有一个tableview,在-(void)tableView: didSelectRowAtIndexPath:
我从sqlite数据库中获取记录并在另一个detailViewController的tableview上显示。在获取记录时UI被卡住了。我必须显示空的tableView
的detailViewController,其中包含活动指示符,直到所有记录都没有从数据库中获取。但问题是当我将函数调用到获取的记录时主运行循环被阻止来自detailViewController -(void)viewDidLoad
的数据库,出现黑屏。
我在某处读过在后台线程上执行数据库操作并不好。所以我无法在后台线程上执行获取操作。
解决这个问题的最佳方法是什么?
如何在detailViewController的视图更新时显示记录。是否有任何好的designPattern或在后台线程上执行数据库操作是否正确?在viewDidAppear中执行大量操作(如数据库操作)也没关系?
提前致谢
答案 0 :(得分:0)
在 viewWillAppear
方法中从数据库中提取记录并将其放入NSMutableArray
并使用NSLog(@"%@",myMutableArr);
检查,如果您获得了正确的数据,则将其放在{{1}上}}
答案 1 :(得分:0)
我认为在不同的线程上加载数据库不是问题。但是,如果要使用数据库结果更新表视图,请使用方法performSelectorOnMainThread。由于UI更新应始终在主线程中。
数据库的结果是否需要表视图?或仅用于detailView? 如果它仅用于detailView,为什么不在detailView出现时查询数据库?