程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-iOS網絡請求數據問題---本人初學,勿噴

ios-iOS網絡請求數據問題---本人初學,勿噴

編輯:編程綜合問答
iOS網絡請求數據問題---本人初學,勿噴

如題。
使用AFN請求數據時,頁面不顯示數據,debug的時候發現dataArray數組沒有值,但是調用testJson這個方法的時候,的確是請求到有數據的,並且已經將數據解析並添加到dataArray這個數組中的啊,不知道為什麼到viewDidLoad這個方法中數組dataArray就是為空。不知道是我寫的代碼的加載順序有問題還是項目的哪個地方需要配置下?求高手幫忙看下。。。
#import "ViewController.h"
#import "AFNetworking.h"
#import "Model.h"
#import "Cell.h"
@interface ViewController ()

@property (nonatomic, weak) UITableView *tableView;
@property (nonatomic,strong) NSMutableArray *dataArray;
@property (nonatomic,copy) NSString *url;
@end

@implementation ViewController

  • (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; UITableView *tableView = [[UITableView alloc]init]; tableView.frame = CGRectMake(0, 0, 375, 667); [self.view addSubview:tableView]; self.tableView = tableView; self.tableView.delegate = self; self.tableView.dataSource = self; self.url = @"http://api.douban.com/v2/movie/top250"; self.dataArray = [[NSMutableArray alloc] init]; //注冊cell [self.tableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"Cell"]; [self testJSON]; }

-(void)testJSON{
//請求數據的地址
NSString *path = self.url;
//創建管理類
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//設置數據二進制,數據格式默認json
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

//利用方法請求數據
[manager GET:path parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];

    NSArray *movieArray = dic[@"subjects"];

    for (NSDictionary *dict  in movieArray)
    {
        Model *model = [[Model alloc] init];
        model.movieName = dict[@"title"];
        model.movieYear = dict[@"year"];
        model.movieImage = dict[@"images"][@"large"];

        [self.dataArray addObject:model];
    }
    //刷新表
    [_tableView reloadData];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"%@",error);
}];

}
#pragma mark ---------數據源方法-------

  • (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataArray.count;
    }

  • (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    Model *model = self.dataArray[indexPath.row];
    static NSString *ID = @"ID";
    Cell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    if (cell == nil) {
    cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
    }
    cell.name.text = model.movieName;
    cell.year.text = model.movieYear;

    return cell;
    }

  • (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

@end


最佳回答:


[self.tableView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellReuseIdentifier:@"Cell"];

static NSString *ID = @"ID";
Cell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

你這兩個地方的cellReuseIdentifier都不一樣,cellForRowAtIndexPath連cell都取不到。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved