Тъй като оригиналните решения вече са публикувани, ще се съсредоточа върху по-дълъг и по-досаден начин, който според мен е правилният начин за справяне със слона в стаята. Това ще ви помогне в дългосрочен план.
Създайте клас Singleton, тъй като може да има само един потребител, който е влязъл едновременно.
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;
}
}
}
Преобразувайте отговора си в NSDictionary
.
NSDictionary *json_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];;//From Santosh Reddy's Answer
Попълнете вашия споделен екземпляр с атрибутите на резултата:
[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"];
Сега атрибутите на вашия потребител ще бъдат достъпни навсякъде в приложението. Просто трябва да импортирате SharedUser.h
до желания UIView
, UIViewController
&въведете следното за достъп до вашите данни:
NSString *userId = [SharedUser getInstance].userId;
Също така имайте предвид, че използвам единичен модел, защото предполагам, че трябва да обработвате само атрибутите на един потребител, които ще се използват в множество контролери за изглед през определен период от време. Ако имате нужда от запазване на няколко потребители, създайте подобен клас потребителски модел и ги попълнете по подобен начин. (Просто не ги правете сингълтон).
Също така бих предложил да прочетете серията уроци на Ray Wenderlich на:
1. Обектно-ориентиран дизайн
2. Дизайнерски шаблони
3. Въведение в моделите на дизайн на iOS