作者leondemon (狗狗)
看板MacDev
标题[问题] Core Data Fetch与GCD的问题
时间Tue Sep 11 03:06:44 2012
想问一个关於CoreData的Fetch和GCD的问题
因为我的database有11万笔资料
所以我在AppDelegate 的didFinishLaunchingWithOptions: 里面用GCD进行Fetching
==in AppDelegate -application:didFinishLaunchingWithOptions:
// 把fetchRC的delegate设为tableVC
self.fetchedResultsController.delegate = self.tableViewController;
// 用GCD进行fetch
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^{
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
self.fetchObjects = [self.fetchedResultsController fetchedObjects];
// 加入这行之後 tableView才会更新
[self.tableViewController.tableView reloadData];
});
==
这样的话App开启的时候会直接显示我的table view
但是等fetch跑完之後table view的data并没有更新
tableViewController里面的NSFetchedResultsControllerDelegate methods被没有被呼叫
於是我在GCD里的最後一行 加入了reloadDta强迫tableView重新载入资料
但是reloadData执行完後 table view却等了5秒钟才更新
请问
1) NSFetchedResultsControllerDelegate methods没被呼叫是正常的吗?
2) 有没有办法加速在reload完之後 更新tableView的速度?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.198.45.233
※ 编辑: leondemon 来自: 60.198.45.233 (09/11 03:34)
1F:推 dryman:跟view相关的要丢到main queue里面做 09/11 06:50
2F:→ dryman:你可以把tableView reloadData那行用dispatch_async 09/11 06:51
3F:→ dryman:dispatch_get_main_queue() 包起来 09/11 06:51
4F:→ leondemon:thanks! 09/11 17:00