Eftersom originallösningar redan har publicerats kommer jag att fokusera på ett längre och mer tråkig sätt som jag tycker är det rätta sättet att hantera elefanten i rummet. Detta kommer att hjälpa dig på längre sikt.
Skapa en Singleton-klass eftersom det bara kan vara en användare inloggad på en gång.
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;
}
}
}
Konvertera ditt svar till NSDictionary
.
NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer
Fyll i din sharedInstance med resultatattributen:
[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 kommer din användares attribut att vara tillgängliga var som helst i appen. Du behöver bara importera SharedUser.h
till önskad UIView
, UIViewController
&skriv följande för att komma åt din data:
NSString *userId = [SharedUser getInstance].userId;
Observera också att jag använder singleton-mönster eftersom jag antar att du bara behöver hantera en användares attribut som kommer att användas i flera viewcontrollers över tiden. Om du behöver spara flera användare, skapa en liknande användarmodellklass och fyll i dem på liknande sätt. (Gör dem bara inte enstaka).
Jag skulle också föreslå att du bör läsa Ray Wenderlichs seriehandledning om:
1. Objektorienterad design
2. Designmönster
3. Introduktion till iOS-designmönster