XMPPFramework iOS开发(二)用户模型

XMPPFramework iOS开发(二)用户模型

一、注册登录

新建Login.storyboard,并把项目的Main Interface设置为Login。

帐号密码运行前就写好是为了方便调试,登录成功后跳转到Main.storyboard。如果之前就已经登录成功,则下次程序运行时不需要登录就直接跳转到Main.storyboard。

二、用户模型

为了方便程序的编写,新建WCUser类,构造用户模型。根据上面的功能描述,知道用户模型的属性应包括:登录帐号、登录密码、注册帐号、注册密码、是否在之前已登录成功;还有连接服务器需要用到的域名、主机名、端口;此外,要实现不登录就跳转到Main.storyboard的功能,应该使用沙盒保存之前登录成功的帐号密码;最后,用户模型是单例的。

2.1 WCUser.h

@interface WCUser : NSObject

@property (nonatomic, copy) NSString *loginAccount;
@property (nonatomic, copy) NSString *loginPwd;
/** * 判断用户是否在之前就已登录成功 */
@property (nonatomic, assign, getter=isLogin) BOOL login;

@property (nonatomic, copy) NSString *registerAccount;
@property (nonatomic, copy) NSString *registerPwd;


/** * 返回一个单例WCUser */
+ (instancetype)shareUser;

/** * 保存最新的用户数据到沙盒 */
- (void)saveToSandBox;

- (NSString *)domain;
- (NSString *)host;
- (int)port;

@end

2.2 WCUser.m

#import "WCUser.h"

#define kAccountKey @"account"
#define kPwdKey @"pwd"
#define kLoginKey @"login"

//域名是配置openfire时自己设置的
static NSString *domain = @"steven.local";
static NSString *host = @"127.0.0.1";
static int port = 5222;

@implementation WCUser

+(instancetype)shareUser
{
    return [[self alloc] init];
}

+ (id)allocWithZone:(struct _NSZone *)zone
{
    static WCUser *user;

    //可能存在三个线程同时调用的情况,为了线程安全考虑s
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        user = [super allocWithZone:zone];

        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        user.loginAccount = [defaults objectForKey:kAccountKey];
        user.loginPwd = [defaults objectForKey:kPwdKey];
        user.login = [defaults boolForKey:kLoginKey];
    });

    return user;
}

- (void)saveToSandBox
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:self.loginAccount forKey:kAccountKey];
    [defaults setObject:self.loginPwd forKey:kPwdKey];
    [defaults setBool:self.isLogin forKey:kLoginKey];
    [defaults synchronize];
}

- (NSString *)domain
{
    return domain;
}

- (NSString *)host
{
    return host;
}

- (int)port
{
    return port;
}

@end

三、小结

XMPPFramework iOS开发(二)用户模型_第1张图片

你可能感兴趣的:(ios,界面,沙盒,注册登录)