国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IOS開發之記錄用戶登陸狀態

2019-11-14 20:04:25
字體:
來源:轉載
供稿:網友

  上一篇博客中提到了用CoreData來進行數據的持久化,CoreData的配置和使用步驟還是挺復雜的。但熟悉CoreData的使用流程后,CoreData還是蠻好用的。今天要說的是如何記錄我們用戶的登陸狀態。例如微信,QQ等,在用戶登陸后,關閉應用在打開就直接登陸了。那么我們在App開發中如何記錄用戶的登陸狀態呢?之前在用php或者java寫B/S結構的東西的時候,我們用session來存儲用戶的登陸信息,Session是存在服務器上僅在一次回話中有效,如果要記錄用戶的登陸狀態,那么會用到一個叫Cookie的東西。Cookie和Session不同,Cookie是存在用戶本地的一個文件,Cookie中存的就是用戶的登陸信息,當用戶在此登陸時,自動從Cookie中讀取用戶的登陸信息。

  不扯Web的啦,在我們App開發中同樣也遇到這要的問題,如何記錄用戶的登陸狀態呢? 用我們的CoreData蠻? CoreData適合處理大量的數據,一般和TableView來結合起來使用,當然我們可以用CoreData來存儲用戶的登陸信息,但這不免有點大材小用,而且用起來也是比較復雜的。那么我們有其他更便捷的方法嗎?蘋果這么注重用戶體驗,當然有其他的方法了,就是NSUserDefault. NSUserDefault設置完值以后要進行同步

  NSUserDefault是蘋果提供給我們用來存儲用戶的登陸信息的一個類,當然是持久化的了,廢話不多說了。我們就模擬一個用戶登陸和注銷的demo來學習一下如何使用NSUserDefault來存儲用戶的登陸信息。

  1.首先我們得有一個登陸頁面對應的類為ViewController.h, 在登陸頁面有兩個TextField和一個Button用來接受用戶的輸入,在點擊Button中的回調的方法中,如果用戶登陸成功,則把用戶信息存入UserDefault中,然后以模態的方式來跳轉到主界面,首先我們要獲取UserDefault的單例,登陸頁面中的登陸按鈕回調的方法代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- (IBAction)tapLogin:(id)sender {
     
    //獲取用戶輸入的信息
    NSString *username = self.usernameTextField.text;
    NSString *passWord = self.passwordTextField.text;
     
    //對用戶信息的驗證
    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中如果未登陸,我們會設置一下rootViewController,代碼如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//判斷是否登陸,由登陸狀態判斷啟動頁面
//獲取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掉,同時用模態的方式來跳轉到登陸頁面,代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (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:^{
    }];

?

  下面的截圖是在storyboard中的截圖,運行出的效果和下面一樣,到此我們就可以實現記錄用戶的登陸狀態了

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 济南市| 桦川县| 榆林市| 米易县| 庆安县| 兴安县| 渝中区| 都江堰市| 南召县| 西城区| 美姑县| 涞水县| 泉州市| 林州市| 兴文县| 禹城市| 吉安县| 儋州市| 舞阳县| 温泉县| 防城港市| 庆云县| 丹凤县| 吉木乃县| 香格里拉县| 兰坪| 普定县| 建水县| 北京市| 泽州县| 虹口区| 金溪县| 铜陵市| 湘潭市| 汉寿县| 桓仁| 鄂州市| 临沧市| 天镇县| 横峰县| 湖北省|