新建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"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; 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
三、小结