オリジナルの解決策はすでに投稿されているので、私は部屋の中の象を扱う適切な方法であると私が思うより長くて退屈な方法に焦点を合わせます。これは、長期的には役立ちます。
一度にログインできるユーザーは1人だけなので、シングルトンクラスを作成します。
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
sharedInstanceに結果属性を入力します:
[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;
また、ある期間にわたって複数のビューコントローラで使用される1人のユーザーの属性のみを処理する必要があると想定しているため、シングルトンパターンを使用していることに注意してください。複数のユーザーを保存する必要がある場合は、同様のユーザーモデルクラスを作成し、同様の方法でそれらを設定します。 (シングルトンにしないでください)。
また、RayWenderlichのシリーズチュートリアルを読むことをお勧めします:
1。オブジェクト指向デザイン
2。デザインパターン
3。 iOSデザインパターンの紹介