你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> IOS開發之記錄用戶登陸狀態

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

編輯:IOS技巧綜合
[摘要]本文是對IOS開發之記錄用戶登陸狀態的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

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的單例,登陸頁面中的登陸按鈕回調的方法代碼如下:

- (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,代碼如下

//判斷是否登陸,由登陸狀態判斷啟動頁面
//獲取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:^{
}];


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

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved