recherche

Maison  >  Questions et réponses  >  le corps du texte

ios - AFNetWorking请求后存入NSArray中,numberOfRowsInSection:方法中返回数据个数为0

先来点伪代码:

#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];
阿神阿神2771 Il y a quelques jours736

répondre à tous(4)je répondrai

  • 大家讲道理

    大家讲道理2017-04-18 09:42:37

    À l'heure actuelle, il n'y a aucun problème avec le code.

    La raison possible de ce phénomène est qu'après l'ajout de tableView à la hiérarchie des vues, numberOfRowsInSection sera appelé plusieurs fois. À ce stade, il n'y a pas de données locales, donc 0 est renvoyé.

    La quantité correcte ne peut être affichée qu'une fois les données obtenues.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:42:37

    Après avoir obtenu les données, rechargez la tableView

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 09:42:37

    @property (nonatomic, strong)NSArray *jsonData;
    你定义的数组是不可变数组,不能进行再次赋值吧。使用NSMutableArray试试

    répondre
    0
  • 黄舟

    黄舟2017-04-18 09:42:37

    Parce qu'à l'impression de 0, les données réseau n'ont pas encore été obtenues...?

    répondre
    0
  • Annulerrépondre