先来点伪代码:
#import <MJExtension.h>
//用来接收AFNetWorking请求的数据
@property (nonatomic, strong)NSArray *jsonData;
@implementation xxxxViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self getNetWorking];
}
-(void)getNetWorking{
AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
[manager GET:@"http://127.0.0.1:8000/api/info/" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
//进度
//进度
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
self.jsonData=[xxxModel mj_ObjectArrayWithKeyValuesArray:responseObject[@"news"]];
[self.xxxx reloadData];
//此处能打印出获取到的数据信息
NSLog(@"%@",self.jsonData);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// error 错误信息
}];
}
@end
上面代码中请求后将responseObject
返回的数据传给了self.jsonData
,用NSLog打印后有值,但是为什么在UITableView
的下面方法中获取到的数据个数为0,请问是什么原因,谢谢~!
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//打印数据个数
SSTLog(@"jsonData个数===%ld",self.jsonData.count);
//这里为0
return self.jsonData.count;
}
打印后的信息如下:
**折腾了一天终于搞定了原来是一个默认选中UITableView第一行的一个方法捣的鬼。重复测试了好几遍,再次感谢回复我的各位兄台,非常的感激~跪拜!
去掉下面的代码就好了。。。(不知道有没有替换这个的方法,有的话望能告知,非常感谢~!)**
//默认选中第一行
[self.leftTableView selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop];
현재까지 코드에는 문제가 없습니다.
이런 현상이 발생할 수 있는 이유는 tableView가 뷰 계층 구조에 추가된 후
numberOfRowsInSection
이 여러 번 호출되기 때문입니다. 이때 로컬 데이터가 없으므로 0이 반환됩니다.정확한 수량은 데이터를 얻은 후에만 표시될 수 있습니다.
데이터를 얻은 후 tableView를 다시 로드하세요.
으아악
0을 인쇄할 때 아직 네트워크 데이터를 얻지 못해서...?