【发布时间】:2017-01-28 23:13:56
【问题描述】:
嗨,我的 iPhone 应用程序用户使用 Web 服务更新 tableview,首先将项目保存在核心数据中。
然而,目前,在我认为数据存在于 Core Data 中与表格视图在屏幕上刷新之间存在很长的延迟。
如果应用空白安装,在微调器停止后十到十五秒后,数据出现在屏幕上之前,应用屏幕可能会保持空白,但是,如果您点击一行,您可以查看建议该项目的详细信息数据存在于核心数据中。类似地,如果您上下滚动,屏幕就会开始填充。我的问题是,如何让数据在保存到核心数据后立即显示在屏幕上?
我已尝试将[self.tableView reloadData] 到处放置,但它似乎对显示数据的时间表没有影响。它唯一有效的时候是我在调用 Web 服务之后将它放在 viewDidLoad 中。在这种情况下,每行都会出现占位符图像,但文本不会在相同的 10 到 15 秒内出现。
这里是调用 web 服务的 viewDidLoad 方法。
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.dataSource = self;
self.tableView.delegate = self;
self.spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
_spinner.center = CGPointMake(160, 200);
_spinner.tag = 1;//todos
[self.tableView addSubview: _spinner];
[self.tableView bringSubviewToFront:_spinner];
_spinner.hidesWhenStopped = YES;
_spinner.hidden = NO;
[_spinner startAnimating];
//GO TO BACKGROUND THREAD FOR SERVER CALL
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL: kServiceURL];
[self fetchServiceData:data];//SYNCING NOW TAKING PLACE
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
[[self.view viewWithTag:1] stopAnimating];
});
});
}
我也将 self.tableView reloadData 放在 viewWillAppear 中,但没有成功。
【问题讨论】:
-
fetchServiceData 发生了什么?
标签: ios objective-c core-data tableview