iOS 開發筆記 - 登陸 註冊 (網上較少的 AFNetworking 3.0)

最近沒更新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解析, 因此直接用返回值對應類型的值去接受就能夠了.


重點一 : AFHTTPSessionManager, 是3.0以後用的新類, 取代了AFHTTPRequestOperationManager

重點二 : 這只是基礎邏輯, 一些其餘須要判斷的東西根據實際狀況來看

重點三 : responseObject 是返回的數據, 別對着task幹使勁

重點四 : 返回值自帶JSON解析, 不要用什麼NSData去接收了

相關文章
相關標籤/搜索