我正在编写一个应用程序,它使用Core Data数据库来存储我想要使用UITableView显示的数据。我有一切工作,但有点好奇,如果有一个方法围绕一个小点,困扰我...
当应用运行时,我会执行以下操作:
我正在使用......
[[self testDatabase] openWithCompletionHandler:^(BOOL success) {
if(success) {
...
}
}];
打开数据库但我的问题是,当块执行时,UITableView dataSource已经调用了 - [TableViewController tableView:numberOfRowsInSection:]并返回rows = 0
到目前为止,我的解决方案是忽略第一个“自动”调用,而是将performFetch和reloadData添加到数据库打开时执行的块中。
[[self testDatabase] openWithCompletionHandler:^(BOOL success) {
if(success) {
[[self fetchedResultsController] performFetch:nil];
[[self tableView] reloadData];
}
}];
我的问题是,有没有办法阻止或延迟第一次通话?或者我应该添加一些东西 - [TableViewController tableView:numberOfRowsInSection:]来管理第一次调用,或者它根本无关紧要,它的确如此?
答案 0 :(得分:2)
您可以尝试以tableView.dataSource
的nil开头并在获取后设置它。