iOSによるログイン状態処理の実現

3019 ワード

今日お話しするのは、私たちのユーザーのログイン状態をどのように記録するかです.例えば、微信、QQなどは、ユーザーがログインした後、アプリケーションを閉じて開くと直接ログインします.では、プロジェクト開発でユーザーのログイン状態をどのように記録しますか?もちろんNSUserDefaultを使います.
NSUserDefaultはアップルがユーザーのログイン情報を格納するために提供してくれたクラスで、もちろん持続的で、くだらないことは多くありません.ユーザーのログインとログアウトをシミュレートしたdemoについて、NSUserDefaultを使用してユーザーのログイン情報を格納する方法を学びます.
1.まず、登録ページに対応するクラスがViewControllerでなければなりません.h,登録ページには2つのTextFieldと1つのButtonがユーザの入力を受け付けるためのものがあり,Buttonのコールバックをクリックする方法では,ユーザの登録が成功すればユーザ情報をUserDefaultに格納し,その後,モダリティでメインインタフェースにジャンプし,まずUserDefaultの一例を取得し,登録ページの登録ボタンコールバックの方法コードは以下の通りである.
- (IBAction)tapLogin:(id)sender {
 
    //         
    NSString *username = self.usernameTextField.text;
    NSString *password = self.passwordTextField.text;
 
    //                      username password         
    if ([username isEqualToString:password]){
        //  userDefault  
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
 
        //               UserDefault
        [userDefaults setObject:username forKey:@"name"];
        [userDefaults setObject:password forKey:@"password"];
         [userDefaults synchronize];
        //         
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
 
        id mainViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainView"];
 
        [self presentViewController:mainViewController animated:YES completion:^{
        }];
    }
 
}

2.ログインページの処理が完了すると、UserDefaultのname属性に値があるかどうかに基づいてどのページをロードするかを選択します.storybaordでは、AppDelegateでメインインタフェースがデフォルトです.mにログインしていない場合は、rootView Controlを設定します.コードは次のとおりです.
//      ,           
//  UserDefault
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSString *name = [userDefault objectForKey:@"name"];

//  storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

//                         
if (name == nil)
{
NSLog(@"%@",name);
id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
self.window.rootViewController = view;
}

3.上記のコードを介して、ユーザーのログイン状態に基づいてロードされた情報を選択することができます.ログイン後のページには、終了するためのボタンを追加します.ボタンコールバックを終了する方法では、以前に保存したユーザー情報をremoveしながら、ログインページにモードでジャンプする必要があります.コードは以下の通りです.
- (IBAction)tapLoginOut:(id)sender {
 
    //  UserDefaults  
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
 
    //  UserDefaults        
    [userDefaults removeObjectForKey:@"name"];
    [userDefaults removeObjectForKey:@"password"];
     [userDefaults synchronize];
    //  storyboard
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
 
    //           
    id view = [storyboard instantiateViewControllerWithIdentifier:@"LoginView"];
 
    //         
    [self presentViewController:view animated:YES completion:^{
    }];