J'essaie d'appeler objectForKey: sur un ivar nsdictionary, mais j'obtiens une erreur EXC_BAD_ACCESS. Le nsdictionary est créé à l'aide de la structure JSON, puis conservé. La première fois que je l'utilise (juste après que je l'ai créée, même boucle d'exécution) cela fonctionne parfaitement bien, mais quand j'essaie d'y accéder plus tard, rien ne fonctionne. Je fais ce code pour essayer de comprendre ce qui est faux:NSDictionary provoquant EXC_BAD_ACCESS
if (resultsDic == nil) {
NSLog(@"results dic is nil.");
}
if ([resultsDic respondsToSelector:@selector(objectForKey:)]) {
NSLog(@"resultsDic should respond to objectForKey:");
}
Le dictionnaire est jamais nul, mais il se bloque toujours sur respondsToSelector. des idées?
outre: Ce sont les autres endroits, en plus haut, que le dictionnaire s'interagi avec:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[connection release];
//get the data in a usable form
NSString *jsonString = [[NSString alloc] initWithData:downloadedData encoding:NSUTF8StringEncoding];
resultsDic = [jsonString JSONValue];
[self processResults];
NSLog(@"Success. Received %d bytes of data",[downloadedData length]);
[downloadedData release];
[jsonString release];
}
- (void)processResults
{
NSArray *resultsArr = [resultsDic objectForKey:@"results"];
CLLocationCoordinate2D coordinate = [self coordinateFromResult:[resultsArr objectAtIndex:0]];
NSLog(@"lat: %f lng: %f", coordinate.latitude, coordinate.longitude);
}
- (void)dealloc {
[resultsDic release];
[super dealloc];
}
Avez-vous utilisé le débogueur et vérifié que 'resultsDic' contient encore une référence valide/est toujours un dictionnaire? –
il est dit qu'il y a 0 paires clé/valeur. mais comment auraient-ils pu s'en aller, le dictionnaire est censé être conservé? – aks