我有一个 WCF 服务,我需要使用用户名和密码登录。然后,该服务向我发回一个令牌字符串,我在查询 WCF 服务中的其他方法时需要使用该字符串。我已经使用 wsdl2objc 设置了服务,它运行良好。我的问题是:
- 我在哪里存储这个令牌字符串?现在手机上没有 SQLite 数据库,因为一切都在后端完成。
- 鉴于可以存储令牌,是否可以创建一个登录页面,该页面仅在手机上没有可用令牌时出现?
- 是否也可以存储我用来登录的用户名,因为我需要它来进行其他一些服务调用。
我有一个 WCF 服务,我需要使用用户名和密码登录。然后,该服务向我发回一个令牌字符串,我在查询 WCF 服务中的其他方法时需要使用该字符串。我已经使用 wsdl2objc 设置了服务,它运行良好。我的问题是:
尝试这个,
如下设置
[[NSUserDefaults standardUserDefaults] setValue:token forKey:@"myToken"];
[[NSUserDefaults standardUserDefaults] setValue:userName forKey:@"myUserName"];
如下获取值
NSString *token = [[NSUserDefaults standardUserDefaults] valueForKey:@"myToken"];
NSString *userName = [[NSUserDefaults standardUserDefaults] valueForKey:@"myUserName"];
您可以使用 NSUserDefaults 来存储令牌字符串。此链接为您提供了更好的方式来理解nsuserdefaults_iphone
希望对你有帮助……!
存储:
[[NSUserDefaults standardUserDefaults] setObject:@"myHashKey" forKey:@"hastToken"];
得到:
[[NSUserDefaults standardUserDefaults] stringForKey:@"hastToken"];
要存储它,请使用:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
[standardUserDefaults setObject:token forKey:@"token"];
[standardUserDefaults synchronize];
要取回它,请使用以下命令:
NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *token = [standardUserDefaults objectForKey:@"token"];
NSUserDefaults
是最好的方法之一。另一种解决方案是使用一个单例类来存储所有需要的细节。这是一个例子:
服务器检查.h
#import <Foundation/Foundation.h>
@interface ServerCheck : NSObject
{
NSString *userToken;
}
@property (nonatomic, strong) NSString* userToken;
+ (id)sharedSingletonController;
@end
服务器检查.m
#import "ServerCheck.h"
@implementation ServerCheck
@synthesize updateOnServer
+(ServerCheck*)sharedSingletonController{
static ServerCheck *sharedSingletonController;
@synchronized(self) {
if(!sharedSingletonController){
sharedSingletonController = [[ServerCheck alloc]init];
}
}
return sharedSingletonController;
}
-(id)init{
self = [super init];
if (self != nil) {
userToken = [[NSString alloc]init];
}
return self;
}
@end
您可以按如下方式访问该值:
ServerCheck *serverData = [ServerCheck sharedSingletonController];
serverData.userToken = <YOUR TOKEN>;