先说需求
在 点击cell的时候 加载网络数据 , 数据加载成功后 再, 跳转控制器.
原先代码
// 加载数据
[self loadPriceData];
// 打印为空
NSLog(@"%@",self.priceTypeAry);
// 跳转控制器[selfpushController:areaCtrl dataAry:self.priceTypeAryctrlTitle:@"期望价格"];
问题是 [self loadPriceData]; 这个方法是调用 AFN 请求数据, afn 默认是异步的, 也就是 ,数还没准备好, 就跳转了.
解决办法是 用一个block 将跳转的 行为 放到block中, 在AFN 获取数据完成后调用 block.
// 调用数据
[selfloadPriceDataSuccess:^{
// 跳转行为
[selfpushController:areaCtrl dataAry:self.priceTypeAryctrlTitle:@"期望价格"];
}];
AFN请求
-(void)loadPriceDataSuccess:(void (^)())successData{
NSString *urlStr =
NSMutableDictionary *parameter = [NSMutableDictionarydictionary];
parameter[@"deviceType"] =
parameter[@"deviceID"] =
parameter[@"token"] =
parameter[@"version"] =
[IWHttpToolgetWithURL:urlStr params:parameter success:^(id json) {
NSDictionary *responseData = (NSDictionary *)json;
if ([responseData[@"success"] isEqual: @"true"] ) {
//
NSDictionary *data = responseData[@"data"];
NSArray *priceType = data[@"priceType"];
// 数组转模型
NSMutableArray *mAry = [NSMutableArrayarray];
for (NSDictionary *dicin priceType) {
entrustPriceType *priceType = [entrustPriceTypeobjectWithKeyValues:dic];
[mAryaddObject:priceType];
}
self.priceTypeAry = mAry.copy;
//成功获得数据 , 进行跳转行为.
if (self.priceTypeAry.count >0) {
successData();
}
NSLog(@"jiazwc");
}
}failure:^(NSError *error) {
NSLog(@"%@",error);
}];
}