從網絡獲取數據顯示到TableViewCell容易犯的錯


   昨晚第一次作用網絡接口獲取的數據,顯示到本身的cell上,犯了不少的錯,數組

總結以下;網絡

1.數據源數組必須首先初始化,通常使用的是懶加載;session

2.異步獲取網絡圖片,經過第三方SDWebImage來作異步

a.首先導入這個包的url

#import "UIImageView+WebCache.h"spa

b.經過這個類的方法設置imageview的圖片3d

//顯示網上的圖片code

    //參數1:須要顯示的網絡圖片的urlorm

    //參數2:佔位圖片(網絡圖片尚未下載完以前,imageView上顯示的圖片)接口

    //sd_setImageWithURL:placeholderImage:

    [_coverImageView sd_setImageWithURL:[NSURL URLWithString:model.imagePath] placeholderImage:[UIImage imageNamed:@" "]];

    

注意:若是網絡圖片過大,顯示的時候會出現花屏的現象;


3!!!.同步從網絡獲取的圖片是一個URL:好比:http:www.bai.com/xxx.jpg這樣子的

在顯示在咱們的界面上的時候代碼要這樣寫:

//從網絡獲取圖片要用二進制獲得url;

    NSURL *url = [NSURL URLWithString:model.cover_image];

    

    NSData *data = [NSData dataWithContentsOfURL:url];

    

    _coverImageView.image = [UIImage imageWithData:data];

2.從網絡獲取的數據顯示在tableViewCell必需要刷新

代碼以下:

#pragma mark - 準備數據

- (void)prepareData{

    

    

    //數組的初始化

    self.dataArray = [[NSMutableArray alloc]init];

    

    NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];

    

    NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

    

    NSURL *url = [NSURL URLWithString:path];

    

    NSMutableURLRequest *request = [NSMutableURLRequest

                                    requestWithURL:url];

    

    

    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

        

        

        

        NSDictionary *dict  = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

        

        NSArray *array = dict[@"data"][@"list"];

        

        for (NSDictionary *dict in array) {

            

            DataModel *myModel = [[DataModel alloc]

                                  initWithDictionary:dict];

           

            

            [self.dataArray addObject:myModel];

            

        }

        //數據刷新!!

        [_tableView reloadData];

        

    }];

    

    [task resume];

   

}


以上就是在從網絡獲取數據時候容易犯錯的地方!!

相關文章
相關標籤/搜索