我在ViewDidLoad中使用AFNetworking GET方法。我的UITableView委托方法在数据加载到数组之前运行。我收到NSArray超出界限的错误。
请帮助我完成它。这是我第一次使用JSON。
我搜索了Stackoverflow和谷歌。但是没有得到正确答案。
答案 0 :(得分:1)
如果您不希望从空白数组中提取数据,则在下载完成之前,您不应该刷新表格视图。
您应该在AFNetworking
来电的成功模块中刷新数据。
[connectionMgr GET:@"yourURL" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { //Note that 204 is considered a success message
//Reload your table view
[self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { //Note that this is called even if the download is cancelled manually
//Failure
}];
修改强>
由于您使用的是UITableViewController
,因此您应该检查numberOfRowsInSection
以查看数组是nil
还是包含0
个对象。然后它不会尝试生成任何细胞。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (array == nil || array.count < 1) {
return 0;
} else {
return array.count; //Or whatever you're using
}
}
我假设你没有使用array.count
来表示细胞数量,否则你可能不会遇到这个问题。
答案 1 :(得分:0)
我建议有一个NSArray属性,它将包含你要放在表视图中的数据。 numberOfRowsForSection:
返回数组的计数。在您的成功块中,将数组设置为等于您返回的数据&amp;致电reloadData
。这样,当没有数据时,您的表视图将尝试创建0个单元格。收到数据后,您需要的数量。