gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 06:22:49 25 4
gpt4 key购买 nike

您好,我已成功收到服务器的响应。我需要在我的应用中访问服务器发送的 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 导入所需的 UIViewUIViewController 并键入以下内容即可访问您的数据:

NSString *userId = [SharedUser getInstance].userId;

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

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

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

关于ios - 如何保存来 self 的服务器的响应,以及我如何访问该数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com