In meiner Anwendung implementiere ich UITableView
mit Daten holen von URL
.Update UiTableview mit Daten von der URL
Alles geht gut.Aber das Problem hier ist die Daten aus Back-End-URL ist zu groß. So zeige ich UIActivityIndicatorView
bis das Datenholen abgeschlossen ist.
Aufgrund der großen Daten dauert es meistens 3 oder 4 Minuten zum Abrufen. So, wie man UITableView
mit Daten aktualisiert, die von der URL so bald wie möglich erhalten.
Ich verwende asynchronousRequest
, um es zu tun.
habe ich diesen Code in cellForRowAtIndexPath
NSString *post = [NSString stringWithFormat:@"skey=%@&user_id=%@",@"sa6rw9er7twefc9a7dvcxcheckedin",@"3225"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://chkdin.com/dev/api/peoplearoundmexy/?%@",post]]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:nil];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (data) {
id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSMutableArray *designation=[json valueForKey:@"designation"];
UIImage *imageobj1=[UIImage imageNamed:@"userpic.jpg"];
NSData *imagedata = UIImagePNGRepresentation(imageobj1);
dispatch_async(dispatch_get_main_queue(), ^{
PeopleNearbyCell *updateCell = (id)[collectionview cellForItemAtIndexPath:indexPath];
if (updateCell)
cell.UserProfilePic.image = [UIImage imageWithData:imagedata];
});
}
}];
[task resume];
Aber es funktioniert nicht. Wie kann ich das erreichen?
Ich würde die Anfrage innerhalb 'cellForRowAtIndexPath' nicht ausführen, sondern innerhalb der' viewDidLoad'. Ich glaube, 'cellForRowAtIndexPath' wird immer dann aufgerufen, wenn eine neue Zelle benötigt wird, ob beim ersten Füllen des Bildschirms mit Zellen oder wenn eine neue Zelle in den Bildschirm gescrollt wird. – damiancesar
Selbst wenn ich den Server in Sicht traf, lud auch, zu viel Zeit zu nehmen, um Daten zu erhalten. Ich möchte nicht warten, bis Daten vollständig geladen sind, was ich Daten von der URL kontinuierlich bekomme Ich muss Tabellenansicht aktualisieren –
Haben Sie versucht, die Menge der Daten zu verringern, die Sie anfordern möchten? Ich weiß, dass einige Endpunkte eine Option dafür haben. – damiancesar