2010-01-04 9 views
0

J'essaie d'obtenir des données JSON chargées à partir d'un délégué NSURLConnection pour renvoyer le tableau d'objets à la tableview qui l'a appelé.Passer un NSArray en tant que paramètre?

L'objet délégué est initialisé avec callback à renvoyer à

NSArray *returnArray; 
ResultsTableRoot *callback; 

méthode de traitement de JSON

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {  
    [connection release]; 

    NSString *responseString = [[NSString alloc] initWithData:responseData 
                encoding:NSUTF8StringEncoding]; 
    [responseData release]; 

    NSError *error; 
    SBJSON *json = [[[SBJSON alloc] init] autorelease]; 
    returnArray = [json objectWithString:responseString 
            error:&error]; 
    [responseString release]; 

    ////////////////////////////////////////////// 
    // Send data back to table view 
    [callback resultsArrayReciever:returnArray]; 
} 

Le tableau ne peut pas être accessible à partir d'ici, le tableview je veux avoir l'information , cependant la méthode est appelée

-(void)resultsArrayReciever:(NSArray *)array { 
    // Code executed  
    if(array) { 
     // Code never executes, array isnt there 
    } 
} 

Si oui Vous avez une meilleure façon d'aller à ce sujet, il est plus que bienvenu!

Répondre

0
  1. Vérifiez l'instance de NSError pour voir s'il n'y a pas eu de problème lors de la désérialisation du JSON;
  2. Essayez conservant l'objet:

    NSError *error; 
    SBJSON *json = [[SBJSON new] autorelease]; 
    returnArray = [[json objectWithString:responseString error:&error] retain]; 
    [responseString release]; 
    [callback resultsArrayReciever:returnArray]; 
    [returnArray release]; 
    
1

Le returnArray est probablement autoreleased. Essayez de le conserver/le relâcher dans vos méthodes. S'il est auto-libéré, le contenu sera libéré dans votre boucle d'exécution et disparaîtra donc au moment où vous voulez y accéder.

Questions connexes