Не удалось получить данные в cellForRowAtIndexPath с использованием модели - PullRequest
0 голосов
/ 05 июня 2018

У меня есть файл API json, и я хотел бы заполнить его в ячейке таблицы.Однако я не смог получить данные и был признателен, если вы все сможете понять, где моя ошибка.Спасибо!

ViewController.m Значение станет пустым в cellForRowAtIndexPath.Как я могу передать свои данные json в модель AddressItem и

@property (strong , nonatomic)NSMutableArray<AddressItem *> *aryAddressData;
@property (nonatomic, strong) AFHTTPSessionManager *manager;
@property (nonatomic,strong) NSMutableArray *aryAddressList;

- (void)setUpAdrressData
{

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    ...
    manager.requestSerializer = serializer;


    NSDictionary *params = @{@"user_id": @(1)};

    [manager POST:@"http://.net/api/member_address" parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {

        _aryAddressList = responseObject;
        self.aryAddressData=[NSMutableArray array];
        for (NSDictionary *subDic in _aryAddressList) {

            AddressItem *model=[[AddressItem alloc]initWithDic:subDic];
            [self.aryAddressData addObject:model];
            NSLog(@"110 %@",model.address_1);
            NSLog(@"110 %@",model.address_2);
           //I CAN GET VALUE HERE
        }

    } failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"IF ERROR");
    }];

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    AddressCell *cell = [tableView dequeueReusableCellWithIdentifier:AddressCellID forIndexPath:indexPath];
    cell.addressItem = _aryAddressData[indexPath.row];
    return cell;
}

MODEL.h

#import "JSONModel.h"
#import <Foundation/Foundation.h>

@interface AddressItem : JSONModel

@property (nonatomic, copy) NSString *address_1;
@property (nonatomic, copy) NSString *address_2;

- (instancetype)initWithDic:(NSDictionary *)dic;

@end

MODEL.m

#import "AddressItem.h"
#import "NSString+Utils.h"

@implementation AddressItem

- (instancetype)initWithDic:(NSDictionary *)dic{
    NSError *error = nil;
    self =  [self initWithDictionary:dic error:&error];
    return self;
}

VIEWCELL.h

#import <UIKit/UIKit.h>
@class AddressItem;
@interface AddressCell : UITableViewCell
@property (strong , nonatomic)AddressItem *addressItem;
@end

VIEWCELL.m

- (void)setAddressItem:(AddressItem *)addressItem
{
    _addressItem = addressItem;
    NSLog(@"202 - %@", addressItem.address_1);
    NSLog(@"202 - %@", addressItem.address_2);
    //NO VALUE HERE AS WELL

}

1 Ответ

0 голосов
/ 05 июня 2018

вызов API является асинхронным, вам необходимо перезагрузить таблицу после заполнения массива

for (NSDictionary *subDic in _aryAddressList) {

    AddressItem *model=[[AddressItem alloc]initWithDic:subDic];
    [self.aryAddressData addObject:model];
    NSLog(@"110 %@",model.address_1);
    NSLog(@"110 %@",model.address_2);

}
dispatch_async(dispatch_get_main_queue(), ^{
  [self.tableView reloadData];
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...