Da originale løsninger allerede er blevet postet, vil jeg fokusere på en længere og mere kedelig måde, som jeg synes er den rigtige måde at håndtere elefanten i rummet på. Dette vil hjælpe dig på længere sigt.
Opret en Singleton-klasse, da der kun kan være én bruger logget ind ad gangen.
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;
}
}
}
Konverter dit svar til NSDictionary
.
NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer
Fyld din sharedInstance med resultatattributterne:
[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 vil din brugers attributter være tilgængelige overalt i appen. Du skal bare importere SharedUser.h
til ønsket UIView
, UIViewController
&skriv følgende for at få adgang til dine data:
NSString *userId = [SharedUser getInstance].userId;
Bemærk også, at jeg bruger singleton-mønster, fordi jeg antager, at du kun behøver at håndtere én brugers attributter, som vil blive brugt i flere viewcontrollere over tid. Hvis du skal have gemt flere brugere, skal du oprette en lignende brugermodelklasse og udfylde dem på en lignende måde. (Gør dem bare ikke singleton).
Jeg vil også foreslå, at du skal læse Ray Wenderlichs serie tutorials om:
1. Objektorienteret design
2. Designmønstre
3. Introduktion til iOS-designmønstre