2011-12-31 7 views
-2

J'ai le code suivant pour se connecter à un service Web et stocker le jeton d'authentification:Accéder à la variable globale?

loginViewController.h 
@interface loginViewController : UIViewController<XMLRPCConnectionDelegate> 
@property (strong, nonatomic) IBOutlet UITextField *SSO; 
@property (weak, nonatomic) IBOutlet UITextField *PASS; 
@property (weak, nonatomic) IBOutlet UITextView *LoginError; 
@property (nonatomic, retain) NSString *token; 
@end 


loginViewcontroller.m 
#import "loginViewController.h" 

@implementation loginViewController 
@synthesize SSO; 
@synthesize PASS; 
@synthesize LoginError; 
@synthesize token; 

- (IBAction)coreLoginClicked:(id)sender { 

    NSURL *URL = [NSURL URLWithString: @"https://somesite"]; 
    XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; 
    XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; 

    [request setMethod:@"systemLogin" withParameters:[NSArray arrayWithObjects: SSO.text, PASS.text, nil]]; 
    [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; 

    NSLog(@"Request body: %@", [request body]); 





} 

- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { 

    if (![response faultCode]) { 
     token = [response object]; 
     [self performSegueWithIdentifier:@"loginSegue" sender:self]; 


    NSLog(@"Response object: %@", [response object]); 
} 

J'ai ce code dans mon contrôleur de vue qui apparaît après la connexion réussie:

loginViewController* login = [[loginViewController alloc] init]; 
NSLog(@"Token: %@", login.token); 

La valeur de login.token est nul. Qu'est-ce que je fais mal ici? Est-ce la façon incorrecte de définir et d'accéder à une variable globale?

Je suivais le tutoriel sur Objective-C de lynda.com, et de cette façon comment ils l'ont fait .. mais peut-être que j'ai raté quelque chose.

Merci!

+1

Objective-C n'a pas de variables globales. –

+0

Objective-C est un sous-ensemble strict de ANSI C, et implémente donc des variables globales. Mais la question semble n'avoir rien à voir avec les variables globales. – hotpaw2

+0

@ hotpaw2 C'est un sur-ensemble car il inclut tout ce que C inclut plus les primitives Objective-C. –

Répondre

1

Vous allouez une nouvelle instance, ce qui signifie qu'elle sera vide. Si vous voulez pouvoir stocker des objets dans une classe, vous devrez utiliser cette instance pour récupérer les variables.

1

Essayez d'accéder à jeton par auto:

NSLog(@"Token: %@", self.token); 
1

Votre second bit de code fait ceci: crée une nouvelle instance de la loginVC, puis vérifie si elle a un jeton. Vous devez instancier votre loginVC, puis faire votre login, et ensuite il aura une valeur en token. Quelle que soit la classe/méthode instanciée, le loginVC sera alors en mesure de vérifier cette instance de loginVC pour le jeton.

Questions connexes