2016-03-25 14 views
0

Kullanıcı adı ve Auth adında Singleton sınıfı var. Auth sınıfında sunucuya istek gönderiyorum ve sonuçta Kullanıcı özelliklerini ayarlamak istiyorum. SetName, setLastname ve benzeri gibi. Ama Kullanıcı değerini ayarlayamıyorum ve her zaman boş verir. İşte Tekil olarak özellik sınıfını değişkene ayarlama Objective C

self.user olduğu gibi

#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:(

     } 

    }]; 

} 

cevap

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

kontrol noktasında 2 önce kontrol noktasını 1 ekle 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 olduğunu başlatılmamış, bu nedenle bu amaçla yeni anahtar kelime kullanın.

+0

Gecemi kurtardın! Teşekkürler! –