Aangezien originele oplossingen al zijn gepost, zal ik me concentreren op een langere en meer vervelende manier waarvan ik denk dat dit de juiste manier is om met de olifant in de kamer om te gaan. Dit zal je op de langere termijn helpen.
Maak een Singleton-klasse aangezien er maar één gebruiker tegelijk kan inloggen.
SharedUser.h
#import <Foundation/Foundation.h>
@interface SharedUser : NSObject
@property (strong, nonatomic) NSString* userId;
@property (strong, nonatomic) NSString* userName;
@property (strong, nonatomic) NSString* subscriptionStatus;
@property (strong, nonatomic) NSString* registerDate;
@property (strong, nonatomic) NSString* expiryDate;
+(SharedUser*) getInstance;
@end
SharedUser.m
#import "SharedUser.h"
@implementation SharedUser
static SharedUser * sharedInstance;
+(SharedUser*) getInstance
{
@synchronized(self)
{
if(sharedInstance == nil)
{
sharedInstance = [[SharedUser alloc] init];
sharedInstance.userName = @"";
sharedInstance.userId = @"";
sharedInstance.subscriptionStatus = @"";
sharedInstance.registerDate = @"";
sharedInstance.expiryDate = @"";
return sharedInstance;
}
else
{
return sharedInstance;
}
}
}
Zet uw reactie om in NSDictionary
.
NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer
Vul uw sharedInstance met de resultaatkenmerken:
[SharedUser getInstance].userId = [json_dict objectForKey:@"user_id"];
[SharedUser getInstance].userName = [json_dict objectForKey:@"username"];
[SharedUser getInstance].subscriptionStatus = [json_dict objectForKey:@"subscription_status"];
[SharedUser getInstance].registryDate = [json_dict objectForKey:@"register_date"];//Better to use NSDate type instead of NSString
[SharedUser getInstance].expiryDate = [json_dict objectForKey:@"expiry_date"];
Nu zijn de kenmerken van uw gebruiker overal in de app beschikbaar. U hoeft alleen SharedUser.h
. te importeren naar gewenste UIView
, UIViewController
&typ het volgende om toegang te krijgen tot uw gegevens:
NSString *userId = [SharedUser getInstance].userId;
Merk ook op dat ik een singleton-patroon gebruik, omdat ik ervan uitga dat je maar één gebruikersattributen hoeft te verwerken die in de loop van de tijd in meerdere viewcontrollers zullen worden gebruikt. Als u meerdere gebruikers wilt opslaan, maakt u een vergelijkbare gebruikersmodelklasse en vult u ze op dezelfde manier in. (Maak ze gewoon niet singleton).
Ik raad je ook aan om de serie tutorials van Ray Wenderlich te lezen over:
1. Objectgericht ontwerp
2. Ontwerppatronen
3. Inleiding tot iOS-ontwerppatronen