Partage
  • Partager sur Facebook
  • Partager sur Twitter

[IOS]Portée d'une variable

Ma variable est déclarer des les paramètres d'une instance

    20 mars 2012 à 21:15:03

    Bonjour,

    J'ai ce code là:

    NSString *urlAsString = @"http://pixolity.com/post.php";
    
    urlAsString = [urlAsString stringByAppendingString:@"?param1=First"]; 
    urlAsString = [urlAsString stringByAppendingString:@"&param2=Second"];
    
    NSURL *url = [NSURL URLWithString:urlAsString];
    
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; [urlRequest setTimeoutInterval:30.0f];
    
    [urlRequest setHTTPMethod:@"POST"];
    
    NSString *body = @"bodyParam1=BodyValue1&bodyParam2=BodyValue2"; [urlRequest setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    
    [NSURLConnection sendAsynchronousRequest:
         urlRequest queue:
              queue completionHandler:
                   ^(NSURLResponse *response, NSData *data, NSError *error) 
                   {
                        if ([data length] >0 && error == nil)
                        {
                                  NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                                  NSLog(@"HTML = %@", html);
                        }
                        else if ([data length] == 0 && error == nil)
                        {
                             NSLog(@"Nothing was downloaded.");
                        }
                        else if (error != nil)
                        {
                             NSLog(@"Error happened = %@", error); 
                        }
                   }
    ];
    


    Ma question est comment récupérer le contenu de ma variable data hors du bloc suivant:

    [NSURLConnection sendAsynchronousRequest: /*normalement le code mais j'abrège/* ];
    


    J'ai bien essayé de déclarer une variable globale dataGlobal de faire un:
    dataGlobale = data;
    

    Ce qui fonctionne mais uniquement lorsqu'on est dans le bloc dont j'aimerais sortir. la même variable sera vide une fois sortie du bloc.

    Pour exemple
    NSData dataGlobal;
    /* du code, du code */
    [NSURLConnection sendAsynchronousRequest:
         urlRequest queue:
              queue completionHandler:
                   ^(NSURLResponse *response, NSData *data, NSError *error) 
                   {
                        if ([data length] >0 && error == nil)
                        {         
                                  dataGlobal = data; //bon on fait une copie
                                  NSLog(@"%lu bytes of data was returned.", (unsigned long)[data length]); // retourne : "20030 bytes of data was returned."
                                  NSLog(@"%lu bytes of dataGlobal was returned.", (unsigned long)[dataGlobal length]); // retourne : "20030 bytes of dataGlobal was returned." Cela prouve que la copie à bien fonctionné
                            
                                  NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                                  NSLog(@"HTML = %@", html);
                        }
                        else if ([data length] == 0 && error == nil)
                        {
                             NSLog(@"Nothing was downloaded.");
                        }
                        else if (error != nil)
                        {
                             NSLog(@"Error happened = %@", error); 
                        }
                   }
    ];
    
    NSLog(@"%lu bytes of dataGlobal was returned.", (unsigned long)[dataGlobal length]); // retourne : "0 bytes of dataGlobal was returned." Donc je ne sais pas où sont passé mes données
    


    J'imagine est c'est une histoire de portée des variables. Quelqu'un peut-il m'aider?

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2012 à 15:15:04

      Bonjour,

      Il va être nécessaire de déclarer ta variable avec "@property"
      Ainsi, tu pourras l'utiliser dans tout ton fichier.

      Bonne journée
      • Partager sur Facebook
      • Partager sur Twitter

      [IOS]Portée d'une variable

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown