最近沒更新iOS的了, 直接更新點實用的東西, 下次更新AFNetworking的封裝, 讓你們直接就用, 不至於那麼麻煩.javascript
因爲 AFNetworking 3.0拋棄了java
AFURLConnectionOperation
AFHTTPRequestOperation
AFHTTPRequestOperationManager正則表達式
這三種類, 因爲很長時間沒用AFNetworking作登陸註冊險些掉坑, 網上也淨是用這三種老的類型作登陸註冊的方法, 因此更新一下筆記, 但願後來者看到這篇文章.json
PS: 此文不談TextField Label的鋪設 直接上有關AFNetworking的新類和基本邏輯乾貨.session
##一. 註冊
首先老規矩 先導入AFNetworking的頭文件dom
#import <AFNetworking.h>
// 若是你是手動導入的AFNetworking則是
// #import "AFNetworking.h"複製代碼
如今通常都是手機號作用戶名註冊, 因此只用手機號註冊的狀況
首先判斷你的手機號格式是否正確lua
- (BOOL)judgeMobileNumber:(NSString *)mobileNum{
// 正則表達式 判斷手機號是否符合條件
NSString *mobileStr = @"^1(3[0-9]|4[57]|5[0-35-9]|7[01678]|8[0-9])\\d{8}$";
NSPredicate *judgeMobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return [judgeMobile evaluateWithObject:mobileNum];
}複製代碼
而後判斷密碼長度是否合適spa
- (BOOL)judgePassword:(NSString *)password{
if ([password length] > 4 && [password length] < 12) {
return YES;
} else{
return NO;
}
}複製代碼
準備工做都作好以後下面乾貨code
AFHTTPSessionManager 這個類是3.0用的新類orm
這個是註冊按鈕的點擊方法
- (void)clickRegisterBtn{
NSString *domainStr = @"你的接口";
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSMutableDictionary *parametersDic = [NSMutableDictionary dictionary];
//往字典裏面添加須要提交的參數
[parametersDic setObject:@"你的帳號" forKey:@"username"];
[parametersDic setObject:@"你的密碼" forKey:@"password"];
if ([self judgeMobileNumber:[parametersDic objectForKey:@"username"]] == YES && [self judgePassword:[parametersDic objectForKey:@"password"]]) {
// 涉及到用戶私密信息用POST請求
[manager POST:domainStr parameters:parametersDic progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"成功");
// 成功則返回登陸界面
[self.navigationController popViewControllerAnimated:YES];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗");
}];
} else {
// 帳號密碼的格式錯誤則彈出提示框
// 初始化提示框;
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"" message:@"帳號或密碼格式錯誤" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"肯定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
// 點擊按鈕的響應事件;
}]];
//彈出提示框;
[self presentViewController:alert animated:true completion:nil];
}
}複製代碼
這樣你的註冊功能就基本邏輯就OK了
##二. 登陸
首先依然要先導入頭文件
#import <AFNetworking.h>複製代碼
點擊登陸按鈕觸發
- (void)clickLoginBtn{
NSString *domainStr = @"後臺給你的接口";
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSMutableDictionary *parametersDic = [NSMutableDictionary dictionary];
//往字典裏面添加須要提交的參數
[parametersDic setObject:@"帳號" forKey:@"username"];
[parametersDic setObject:@"密碼" forKey:@"password"];
// 涉及到用戶隱私, 依然要用POST
[manager POST:domainStr parameters:parametersDic progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"成功");
// AFNetworking 自帶JSON解析 後臺返回字典, 用字典接收
NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
[self presentViewController:[self tabBarControllerRoot] animated:YES completion:^{
// 跳轉到首頁
}];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"失敗");
}];
}複製代碼
網上有的一些用NSData接收而後轉成JSON這種作法會報錯, 如今AFNetworking自帶JSON解析, 因此直接用返回值對應類型的值去接受就能夠了.