Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在现有数据可见的情况下重新加载表视图数据_Objective C_Json_Uitableview_Afnetworking_Uirefreshcontrol - Fatal编程技术网

Objective c 在现有数据可见的情况下重新加载表视图数据

Objective c 在现有数据可见的情况下重新加载表视图数据,objective-c,json,uitableview,afnetworking,uirefreshcontrol,Objective C,Json,Uitableview,Afnetworking,Uirefreshcontrol,我使用通过AFNetworking获取和解析JSON的标准方法,然后使用数据填充表视图 NSURL *url = [NSURL URLWithString:serverURL]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSO

我使用通过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”而终止应用程序,原因: '*-[\uu NSArrayI objectAtIndex:]:索引1超出空 数组'

现在我甚至不能完全确定这是正确的方法,所以基本上,我的问题是,在加载新数据之前,我如何将数据保留在表视图中,或者将现有数据向下推到表视图中,就像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中,但在 更新'


在成功块中,您必须首先检查是否正在获取数据。如果存在任何数据,则使用新数据重新加载tableview,否则不应尝试更改现有数据。试试这个

  NSArray *tempResults = [json valueForKeyPath:@"data"];
  if(tempResults && [tempResults count] > 0)
  {                                             
      self.results = tempResults;                                        
  }                                        
  [self.tableView reloadData];

在tempResults上保留一个断点,看看您得到了什么数据。

谢谢您的回答,但这并不能真正回答问题。我试图在现有数据的基础上添加新数据,而不是简单地用新数据重新加载表。