Медленная загрузка AFHTTPSessionManager для первого запроса

Я применил этот код в моей таблице. Тем не менее, я понимаю, что данные будут загружаться медленно при первом запросе. После этого, если я получу доступ к той же странице, записи будут загружены быстрее. Любая идея, чтобы улучшить для первой загрузки? Спасибо за вашу помощь.

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

[manager GET:@"http://api.domainname.com/api/abc" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {

    _serverDataArr = responseObject;
    self.dataArr=[NSMutableArray array];

    for (NSDictionary *subDic in self.serverDataArr) {

        Friend_Model *model=[[Friend_Model alloc]initWithDic:subDic];
        [self.dataArr addObject:model];
    }

    _rowArr=[Friend_DataHelper getFriendListDataBy:self.dataArr];
    _sectionArr=[Friend_DataHelper getFriendListSectionBy:[_rowArr mutableCopy]];

    [self.tableView reloadData];


} failure:^(NSURLSessionTask *operation, NSError *error) {

    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Error Retrieving Ninjas"
                                                                     message:[error localizedDescription]
                                                              preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok"
                                                       style:UIAlertActionStyleCancel
                                                     handler:nil];

    [alertVC addAction:okAction];

    [self presentViewController:alertVC animated:YES completion:nil];
}];

А вот мой код cellForRowAtIndexPath:-

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellIde=@"cellIde";
    Friend_TableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIde];
    if (cell==nil) {
        cell=[[Friend_TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIde];
    }
    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

    if (tableView==_searchDisplayController.searchResultsTableView){
        NSString *url_Img_FULL = [_searchResultArr[indexPath.row] valueForKey:@"image"];
        [cell.headImageView setImageWithURL:[NSURL URLWithString:url_Img_FULL] placeholderImage:[UIImage imageNamed:@"Placeholder.png"]];
        [cell.nameLabel setText:[_searchResultArr[indexPath.row] valueForKey:@"name"]];
    }else{
        Friend_Model *model=_rowArr[indexPath.section][indexPath.row];

        [cell.headImageView setImageWithURL:[NSURL URLWithString:model.image] placeholderImage:[UIImage imageNamed:@"Placeholder.png"]];

        [cell.nameLabel setText:model.name];
    }

    return cell;
}

1 ответ

Решение

Похоже, вы делаете совершенно подходящие вещи для формирования запроса и представления результатов. Возможно, вы заметили большую разницу между первым и третьим запросами, потому что ваш сервер не активен, а данные кэшированы в различных точках стека. Здесь сложно что-то предложить, кроме как перенести запрос раньше, возможно, при запуске приложения, где пользователь может не заметить такой большой задержки.

Другой идеей было бы более лениво запрашивать данные для строк таблицы в зависимости от места прокрутки таблицы. Когда пользователь жестом нажимает внизу таблицы, покажите индикатор занятости и идите, чтобы получить больше данных.

Другие вопросы по тегам