Vzhledem k tomu, že původní řešení již byla zveřejněna, zaměřím se na delší a únavnější způsob, o kterém si myslím, že je správný způsob, jak zacházet se slonem v místnosti. To vám pomůže z dlouhodobého hlediska.
Vytvořte třídu Singleton, protože v jednu chvíli může být přihlášen pouze jeden uživatel.
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;
}
}
}
Převeďte svou odpověď do NSDictionary
.
NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer
Naplňte sdílenou instanci atributy výsledku:
[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"];
Nyní budou atributy vašeho uživatele dostupné kdekoli v aplikaci. Stačí importovat SharedUser.h
na požadovaný UIView
, UIViewController
a zadejte následující pro přístup ke svým datům:
NSString *userId = [SharedUser getInstance].userId;
Všimněte si také, že používám vzor singleton, protože předpokládám, že potřebujete zpracovat pouze atributy jednoho uživatele, které budou v průběhu času použity ve více ovladačích zobrazení. Pokud potřebujete uložit více uživatelů, vytvořte podobnou třídu uživatelského modelu a naplňte je podobným způsobem. (Jen je nedělejte singleton).
Také bych vám doporučil, abyste si přečetli tutoriály série Raye Wenderlicha na:
1. Objektově orientovaný design
2. Návrhové vzory
3. Úvod do návrhových vzorů iOS