Die Anforderung besteht darin, die edmunds-API aufzurufen und den Namen des Verkäufers in einer Tabelle anzuzeigen, sobald die App gestartet wird.Wie wird die API-Methode ausgeführt, bevor Tabellenansicht geladen wird?
1) -getAPIData()
Ruft die Namen von Händlern und speichert in self.dealerName Array.
-(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()
Diese Methode ruft getAPIData (obiges Verfahren).
- (void)viewDidLoad
{
[super viewDidLoad];
[self getAPIData];
}
3) - (NSInteger) tableview: (UITableView *) Tableview numberOfRowsInSection: (NSInteger) Abschnitt
Gibt die Händler zählen.
-(NSInteger)tableView:(UITableView *)tableview numberOfRowsInSection:(NSInteger)section
{
[self.task resume];
return self.dealerName.count;
}
Die getAPIData() -Methode wird ausgeführt, nachdem numberOfRowsInSection() aufgerufen wurde. Also wird die Tabelle leer gemacht.
Wie kann ich die getAPIData() aufrufen, bevor die Tabelle auf dem Bildschirm geladen wird?
Vielen Dank Ihre Antwort hat mir geholfen. – Sandy