1

我有一个 WCF 服务,我需要使用用户名和密码登录。然后,该服务向我发回一个令牌字符串,我在查询 WCF 服务中的其他方法时需要使用该字符串。我已经使用 wsdl2objc 设置了服务,它运行良好。我的问题是:

  • 我在哪里存储这个令牌字符串?现在手机上没有 SQLite 数据库,因为一切都在后端完成。
  • 鉴于可以存储令牌,是否可以创建一个登录页面,该页面仅在手机上没有可用令牌时出现?
  • 是否也可以存储我用来登录的用户名,因为我需要它来进行其他一些服务调用。
4

5 回答 5

3

尝试这个,

如下设置

[[NSUserDefaults standardUserDefaults] setValue:token forKey:@"myToken"];
[[NSUserDefaults standardUserDefaults] setValue:userName forKey:@"myUserName"];

如下获取值

NSString *token = [[NSUserDefaults standardUserDefaults] valueForKey:@"myToken"];
NSString *userName = [[NSUserDefaults standardUserDefaults] valueForKey:@"myUserName"];
于 2013-05-29T12:51:28.443 回答
2

您可以使用 NSUserDefaults 来存储令牌字符串。此链接为您提供了更好的方式来理解nsuserdefaults_iphone

希望对你有帮助……!

于 2013-05-29T12:46:57.113 回答
2

存储:

[[NSUserDefaults standardUserDefaults] setObject:@"myHashKey" forKey:@"hastToken"];

得到:

[[NSUserDefaults standardUserDefaults] stringForKey:@"hastToken"];
于 2013-05-29T12:51:04.883 回答
2

要存储它,请使用:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

[standardUserDefaults setObject:token forKey:@"token"];
[standardUserDefaults synchronize];

要取回它,请使用以下命令:

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
NSString *token = [standardUserDefaults objectForKey:@"token"];
于 2013-05-29T12:53:16.570 回答
1

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>;
于 2013-05-29T13:00:09.430 回答