2016-03-25 4 views
0

Ich habe Eigenschaft Benutzerklasse und Singleton-Klasse mit dem Namen Auth. In der Auth-Klasse sende ich eine Anfrage an den Server und mit dem Ergebnis zurück möchte ich Benutzereigenschaften einstellen. Wie setName, setLastname und so weiter. Aber ich kann keinen User-Wert einstellen und es gibt immer null. HierVariable auf Eigenschaft Klasse innerhalb Singleton setzen Objective C

ist User.h

@interface User : NSObject 
@property (nonatomic, strong) NSString *name; 
@property (nonatomic, strong) NSString *lastname; 
@end 

Auth.h

#import "User.h" 
@interface Auth : NSObject{ 
    User *user; 
} 

@property (nonatomic, retain) User *user; 
@property (atomic, retain) NSString *token; 

+(Auth *) getInstance; 
-(void) doLogin:(void (^) (BOOL, NSDictionary *))comletion; 
@end 

Auth.m

#import "Auth.h" 
#import "User.h" 
#import "ServiceRequest.h" 

@implementation Auth 


@synthesize user; 

+ (Auth *) getInstance 
{ 
    static Auth* sharedInstance = nil; 
    static dispatch_once_t predicate; 
    dispatch_once(&predicate, ^{ 
     sharedInstance = [ [ self alloc ] init ]; 
    }); 
    return sharedInstance; 
} 


-(void) doLogin:(void (^) (BOOL, NSDictionary * err))comletion{ 

    [[[ServiceRequest alloc] init] doLogin:^(NSDictionary *data, NSString *err) { 

     if ([data objectForKey:@"errors"] != [NSNull null]) { 
      comletion (NO, [data objectForKey:@"error"]); 
     }else { 

     [self.user setName:@"USER_NAME"]; 

      NSLog(@"USER NAME IN AUTH:%@",self.user.name); 
      //RETURNS NULL:(

     } 

    }]; 

} 

Antwort

1
//Checkpoint 1 
if (self.user == nil) { 
    self.user = [User new]; 
} 
//Checkpoint2 
[self.user setName:@"USER_NAME"]; 

hinzufügen Kontrollpunkt 1 vor dem Kontrollpunkt 2 als self.user ist nicht initialisiert, verwenden Sie zu diesem Zweck ein neues Schlüsselwort.

+0

Sie haben meine Nacht gerettet! Vielen Dank! –

Verwandte Themen