利用LeanCloud来实现注册帐号,存储帐号以及,登陆时查询帐号是否正确.集成方式很简单能够看这里的官方文档.地址是这里: https://leancloud.cn/docs/
数据库
// AppDelegate.m文件网络
// // AppDelegate.m // LoginView // // Created by 裴波波 on 16/4/21. // Copyright © 2016年 裴波波. All rights reserved. // #import "AppDelegate.h" #import <AVOSCloud/AVOSCloud.h> @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // applicationId 即 App Id,clientKey 是 App Key。 //这里的id 以及 key 都是在leancloud中建立应用之后提供的,用来访问leancloud统计以及受权 [AVOSCloud setApplicationId:@"GCyStwB6xVWMfvLiGktfTu4p-gzGzoHsz " clientKey:@"bNJj02mLLUbtbQyExkCLw9yM"]; //跟踪应用打开状况 [AVAnalytics trackAppOpenedWithLaunchOptions:launchOptions]; return YES; } @end
// // ViewController.m // LoginView // // Created by 裴波波 on 16/4/21. // Copyright © 2016年 裴波波. All rights reserved. // #import "ViewController.h" #import <AVOSCloud/AVOSCloud.h> #import "PBViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @property (weak, nonatomic) IBOutlet UITextField *txtPassword; @end @implementation ViewController #pragma mark - 注册用户 - (IBAction)clcikRegisterUsers:(id)sender { //获取用户输入字符 NSString * name = self.txtUserName.text; NSString * pwd = self.txtPassword.text; NSLog(@"name : %@ pwd : %@",name,pwd); //将注册内容 异步 写到云 dispatch_async(dispatch_get_global_queue(0, 0), ^{ AVObject *post = [AVObject objectWithClassName:@"PBBUsers"]; [post setObject:pwd forKey:name]; [post saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { // 保存成功了! NSLog(@"帐户保存成功"); } }]; }); } #pragma mark - 点击登陆 - (IBAction)clcikLoginBtn:(id)sender { //获取用户输入字符 NSString * name = self.txtUserName.text; NSString * pwd = self.txtPassword.text; NSLog(@"name : %@ pwd : %@",name,pwd); //异步访问网络验证帐号密码 dispatch_async(dispatch_get_global_queue(0, 0), ^{ //联网查询用户名密码 //数据查询 AVQuery *query = [AVQuery queryWithClassName:@"PBBUsers"]; // [query whereKey:@"words" equalTo:@"Hello World!"]; [query whereKey:name equalTo:pwd]; [query getFirstObjectInBackgroundWithBlock:^(AVObject *object, NSError *error) { // object 就是符合条件的第一个 AVObject if (error) { NSLog(@"%@",error); NSLog(@"帐号或者密码错误"); return; } NSString * str = object[@"words"]; NSLog(@"%@",str); //跳转到主线程执行 dispatch_async(dispatch_get_main_queue(), ^{ PBViewController * vc = [PBViewController new]; [self.navigationController pushViewController:vc animated:YES]; }); }]; }); }
- (void)viewDidLoad { [super viewDidLoad]; //测试存储 // AVObject *post = [AVObject objectWithClassName:@"TestObject"]; // [post setObject:@"Hello World!" forKey:@"words"]; // [post saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { // if (succeeded) { // // 保存成功了! // } // }]; } //-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // // //数据查询 // AVQuery *query = [AVQuery queryWithClassName:@"TestObject"]; // [query whereKey:@"words" equalTo:@"Hello World!"]; // [query getFirstObjectInBackgroundWithBlock:^(AVObject *object, NSError *error) { // // object 就是符合条件的第一个 AVObject // if (error) { // NSLog(@"%@",error); // return; // } // NSString * str = object[@"words"]; // NSLog(@"%@",str); // }]; //} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
访问网络要异步执行,主队列要异步执行,同步会卡住,死锁app