在AFNetworking中成功调用后self.tableView reloadData不起作用
Posted
技术标签:
【中文标题】在AFNetworking中成功调用后self.tableView reloadData不起作用【英文标题】:self.tableView reloadData not working after successful call in AFNetworking 【发布时间】:2014-07-24 16:39:51 【问题描述】:我有一个运行类似于本教程http://www.raywenderlich.com/59255/afnetworking-2-0-tutorialAFHTTPSessionManager 组件的类
但是,[self.tableView reloadData] 对我不起作用。
我的管理器是这样实现的:
-(void) refresh
manager = [[AFHTTPSessionManager...] iniwithBaseURL:...];
[manager Get:... parameters:... success:^(NSURLSessionDataTask *task, id responseObject)
//test success values in responseObject
if(test)
//Get table data
[self.tableView reloadData];
....
但是,如果我之后在单独的函数中运行 [self.tableView reloadData],它就可以正常工作。 为什么会发生这种情况,而不是在教程中应该如何发生?
【问题讨论】:
【参考方案1】:始终在主队列上重新加载:
dispatch_async(dispatch_get_main_queue(), ^
[self.tableView reloadData];
);
【讨论】:
我觉得很奇怪,我需要这个来进行 reloadData,但是在另一个 AFHTTPSessionManager 实例中,我有 viewControllers 在成功块中执行 segues,这不是必需的【参考方案2】:在主队列中写入[self.tableView reloadData];
。
dispatch_sync(dispatch_get_main_queue(), ^
[self.tableView reloadData];
);
【讨论】:
不要重复答案。 其实这个是第一位的。所以我给它打勾 没有我的第一,但没关系 别担心,最重要的是你的问题解决了 这不是重复的答案。一个调用dispatch_ASYNC,另一个调用dispatch_SYNC,非常不同。以上是关于在AFNetworking中成功调用后self.tableView reloadData不起作用的主要内容,如果未能解决你的问题,请参考以下文章
应用程序进入后台后未调用 AFNetworking 成功/失败块
尽管上传成功,但调用了 AFNetworking 2.0 POST + PHP 阻止失败
Swift:在 AFNetworking 调用中关闭的未包装选项