微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 如何保存响应来自我的服务器,以及如何访问该数据

您好我从我的服务器成功获得响应.我需要访问我的应用程序中的服务器发送的user_id.

检查我的代码

 NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];



        NSURL * url = [NSURL URLWithString:@"my url"];
        NSMutableuRLRequest * urlRequest = [NSMutableuRLRequest requestWithURL:url];




        Nsstring * params=[[Nsstring alloc]initWithFormat:@"mobile=%@",[self.reqnum text ]];

        NSLog(@"%@",params);
        [urlRequest setHTTPMethod:@"POST"];
        [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

        NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest
                                                           completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                                                               NSLog(@"Response:%@ %@\n", response, error);
                                                               if(error == nil)
                                                               {
                                                                   Nsstring * text = [[Nsstring alloc] initWithData: data encoding: NSUTF8StringEncoding];

                                                                     NSLog(@"Data = %@",text);



                                                                   [[NSUserDefaults standardUserDefaults]setobject:@"Y" forKey:@"login"];

                                                                   [[NSUserDefaults standardUserDefaults] synchronize];


                                                               }


                                                           }];
        [dataTask resume];

对于这段代码,我得到的反应如下:

在这里,我需要访问我的应用程序中的user_id.所以我可以得到特定的user_id.

谢谢.

解决方法:

由于原始解决方案已经发布,我将专注于更长和更长更麻烦的方式,我认为是在房间里处理大象的正确方法.从长远来看,这将对您有所帮助.

创建一个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

使用结果属性填充您的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;

另请注意,我使用的是单例模式,因为我假设您只需要处理一个用户属性,这些属性将在一段时间内用于多个视图控制器.如果您需要保存多个用户,请创建一个类似的用户模型类,并以类似的方式填充它们. (只是不要让他们单身).

另外我建议您阅读Ray Wenderlich的系列教程:

1. Object Oriented Design
2. Design Patterns
3. Intro to iOS design patterns

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐