NSArray objectAtIndex indice 0 au-delà des limites de tableau vide
Je suis en train de travailler sur quelqu'un d'autre app et et j'obtiens cette erreur:
'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0
beyond bounds for empty array'
Xcode points de cette ligne:
NSDictionary *geo = [response[0] objectForKey:@"geometry"];
Voici la méthode complète:
- (void)loadLatLong {
indx ++;
if (indx == [datalist count]) {
[self showMarker];
// self.alertView.hidden = true;
// [self setThreeQuarters];
[self.progressbar setProgress:1.0 animated:YES];
return;
}
PointClass *pt = datalist[indx];
NSString *stPt = [pt.Location stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *str = [stPt stringByReplacingOccurrencesOfString:@" " withString:@"+"];
NSString *url = [NSString stringWithFormat:@"https://maps.google.com/maps/api/geocode/json?address=%@&sensor=false&key=AIzaSyAoSBH8mBmeVp2HVx6vJrkTvl3bjRFiWag",str];
NSURL *urlString = [NSURL URLWithString:url];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
[manager GET:[urlString absoluteString ]parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *response = [responseObject objectForKey:@"results"];
NSDictionary *geo = [response[0] objectForKey:@"geometry"];
NSDictionary *location = [geo objectForKey:@"location"];
pt.lat = [[location objectForKey:@"lat"] doubleValue];
pt.lng = [[location objectForKey:@"lng"] doubleValue];
datalist[indx] = pt;
NSLog([NSString stringWithFormat:@"%%d \n"], indx);
[self loadLatLong];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
}
Ne peut pas trouver de modifier le code.
Mise à JOUR:
Je tiens à ajouter qu'il ne se bloque parfois et parfois il charge
OriginalL'auteur Paul | 2015-07-25
Vous devez vous connecter pour publier un commentaire.
Le code fait la supposition que
response
tableau a toujours au moins un élément. Cela rompt lorsque le tableau est vide, vous devez ajouter du code pour vérifier:Créer une nouvelle question car il y a maintenant un nouveau problème.
OK, je vois. Elle s'arrête sur 71 car il n'y a pas un élément.C'est nul, tout le reste est 1. Je pense que c'est le téléchargement de ce depuis le serveur de Google. screencast.com/t/kYr9OU0S2
Est-ce un problème de serveur?
L'application cessé de s'écraser, mais s'arrête sur le record de 70. Est-ce une sever problème? J'ai vérifié sur le serveur et tout est rempli.
OriginalL'auteur dasblinkenlight
Il est écrasé parce que la
response
n'avez pas n'importe quel objet. Vous devriez vérifier avant d'appelerresponse[0]
. Quelque chose comme ceciif ([response count] == 0) return;
OriginalL'auteur sahara108