1 model .h 2 #import <Foundation/Foundation.h> 3 #import "AFHTTPRequestOperationManager.h" 4 5 @interface testModel : NSObject 6 @property (nonatomic, strong) NSString *code;11 @property (nonatomic, strong) NSString *name;13 @property (nonatomic, strong) NSString *status;15 @property (nonatomic, assign) int time; 16 @property (nonatomic, strong) NSString *date; 17 18 - (NSMutableArray *)getData:(UITableView *)tableView; 19 @end
model.m
1 #import "testModel.h" 2 3 @implementation testModel 4 5 - (NSMutableArray *)getData:(UITableView *)tableView{
6 NSMutableArray *data_array = [[NSMutableArray alloc] init];
7 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
8 [manager GET:@"www.hao123.com" parameters:nil success:^(AFHTTPRequestOperation *operation, id reponseObject) {
9 //使用打印出的字符串在网上json解析出数据结构,定义模型属性和获取方法,data数据结构外层为数组,使用数组接收
10 NSLog(@"%@",[operation responseString]);
11 NSArray *array = reponseObject[@"data"];
12
13 for (NSDictionary *dict in array) {
14 testModel *test = [[testModel alloc] init];
15 [test setValuesForKeysWithDictionary:dict];
16 [data_array addObject:test];
17 }
18 [tableView reloadData]; // 数据的接收完成是在页面显示完成之后 --> 一定要使用reloadData刷新控件的数据,
19 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
20 NSLog(@"%@", error);
21 }];
22 return data_array;
23 }
24
25 -(NSString *)description {
26 return [NSString stringWithFormat:@"<%@, %p>self.code = %@, self.name = %@, self.status = %@, self.time = %d, self.date = %@",self.class, self, self.code, self.name, self.status, self.time, self.date ];
27 }
ViewController.m
1 #import "testModel.h" 2 @interface ViewController () <UIScrollViewDelegate> 3 { 4 NSMutableArray *data_array; 5 } 6 @property (nonatomic ,strong) UITableView *tabV; 7 @end 8 9 @implementation ViewController 10 11 -(void)setTabV:(UITableView *)tabV { 12 if (_tabV == nil) { 13 testModel *model = [[testModel alloc] init]; 14 _tabV = tabV; 15 data_array = [model getData:_tabV]; 16 } 17 } 18 19 - (void)viewDidLoad { 20 [super viewDidLoad]; 21 } 22 23 #pragma mark------UITableViewDataSource,UITableViewDelegate 24 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 25 { 26 [self setTabV:tableView]; 27 return 1; 28 29 } 30 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 31 { 32 static NSString *cellStr = @"cellStr"; 33 SCTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellStr]; 34 if (!cell) 35 { 36 cell = [[NSBundle mainBundle]loadNibNamed:@"SCTableViewCell" owner:nil options:nil][0]; 37 NSLog(@"******%@******", data_array); 38 } 39 return cell; 40 } 41 42 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 43 { 44 return tableView.height *18/45; 45 }
遇到问题一:
数据的接收在页面限制之后,在外部打印数据为空
解决:刷新控件数据,在控件代理方法中可获取数据
遇到问题二:
getdata在viewcontroller中,不利于的控制器和数据的分离
解决:将控件当作参数传入getDatazhong
遇到问题:将调用getData放在ViewDidLoad中,防止重复调用,但是进入getData时,参数为空,reloadData之后,不再进入ViewDidLoad方法,而是直接进入tableView的代理方法
解决:在代理方法中调用getData
遇到问题:重复调用getData,重复刷新tabelView --> 死循环
解决:使用懒加载,全局tableView,在全局变量为空时赋值并调用getData
将关于数据的代码放入模型中,微调整,运行成功!