Требование - вызвать API edmunds и отобразить имя поставщика в таблице, как только приложение запустится.Как выполнить метод API перед загрузкой таблицы?
1) -getAPIData()
Извлекает имена дилеров и магазинов в self.dealerName массиве.
-(void)getAPIData{
NSURLSession *session = [NSURLSession sharedSession];
self.task = [session dataTaskWithURL:[NSURL URLWithString:[NSString stringWithFormat:
@"https://api.edmunds.com/api/dealer/v2/dealers?zipcode=%@&radius=%@&fmt=json&api_key=ycwedw68qast829zx7sn9jnq",
@"01609",@"10"]]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (data.length > 0 && error == nil)
{
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:NULL];
self.dealersDictionary = jsonData[@"dealers"];
for (id item in self.dealersDictionary){
if (item[@"name"] != nil){
self.dealerName = item[@"name"];
NSLog(@"%@",self.dealerName);
}else{
NSLog(@"could'nt find the names");
}
}
}
}
];
}
2) -viewDidLoad()
Этот метод вызывает getAPIData (выше способом).
- (void)viewDidLoad
{
[super viewDidLoad];
[self getAPIData];
}
3) - (NSInteger) Tableview: (UITableView *) TableView numberOfRowsInSection: раздел
(NSInteger) Возвращает число дилеров.
-(NSInteger)tableView:(UITableView *)tableview numberOfRowsInSection:(NSInteger)section
{
[self.task resume];
return self.dealerName.count;
}
getAPIData() метод выполняется после вызова номераOfRowsInSection(). Таким образом, таблица становится пустой.
Как я могу вызвать getAPIData() перед загрузкой таблицы на экран?
Спасибо, ваш ответ мне помог. – Sandy