2011-12-31 3 views
-2

У меня есть следующий код для входа в веб-службы и хранения ключа аутентификации:Доступ к глобальной переменной?

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]); 
} 

У меня есть этот код на мой взгляд контроллера, который отображается после успешного входа в систему:

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

Значение of login.token is no. Что я здесь делаю неправильно? Является ли это неправильным способом установки и доступа к глобальной переменной?

Я следил за учебником по Objective-C от lynda.com и таким образом, как они это сделали .. но, возможно, я что-то пропустил.

Спасибо!

+1

Объектив-C не имеет глобальных переменных. –

+0

Objective-C является строгим подмножеством ANSI C и таким образом реализует глобальные переменные. Но вопрос, похоже, не имеет ничего общего с глобальными переменными. – hotpaw2

+0

@ hotpaw2 Это надмножество, так как оно включает в себя все, что содержит C, плюс примитивы Objective-C. –

ответ

1

Вы назначаете новый экземпляр, что означает, что он будет пустым. Если вы хотите иметь возможность хранить объекты в классе, вам нужно будет использовать экземпляр, чтобы вернуть переменные.

1

Try доступ к фишке через себя:

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

Ваш второй бит кода делает это: создает новый экземпляр loginVC, а затем проверяет, чтобы увидеть, если он имеет маркер. Вам нужно создать экземпляр вашего loginVC, затем выполнить свой логин, а затем он будет иметь значение в токене. Независимо от того, какой класс/метод создает экземпляр loginVC, он сможет проверить , что экземпляр loginVC для токена.

Смежные вопросы