我正在使用通过 AFNetworking 获取和解析 JSON 的标准方法,然后使用数据填充表格视图。
NSURL *url = [NSURL URLWithString:serverURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id json) {
[refresh endRefreshing];
self.results = [json valueForKeyPath:@"data"];
[self.tableView reloadData];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
[refresh endRefreshing];
}];
[self.tableView reloadData];
[operation start];
它的方式是,每次用户拉动刷新整个表格视图时都会消失,新数据会被加载,然后在大约一秒钟后呈现给用户。但是,我希望表中的数据保留在那里,直到新数据可用并加载。所以我注释掉了[self.tableView reloadData];
让它工作的想法,虽然在最初的几秒钟内它是可见的,但应用程序很快就会崩溃。出现错误:
由于未捕获的异常“NSRangeException”而终止应用程序,原因:“ * -[__NSArrayI objectAtIndex:]: index 1 beyond bounds for empty array”
现在我什至不完全确定这是做这件事的正确方法,所以基本上,我的问题是我如何将数据保留在表格视图中,直到加载新数据,或者将现有数据推送到表格视图中,有点像 Facebook 和 Twitter 应用程序在您刷新新闻提要/时间线时所做的。
更新
我试过这个方法:
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:[self.results count] inSection:0];
NSArray *indexArray = [NSArray arrayWithObjects:indexPath, nil];
[self.tableView insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationAutomatic];
但我收到以下错误:
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“尝试将第 15 行插入第 0 节,但更新后第 0 节中只有 15 行”