簡體   English   中英

請記住我使用UISwitch和NSUserDefaults ios的功能

[英]Remember me functionality using UISwitch and NSUserDefaults ios

我有一個視圖控制器,其中包含用戶名和密碼的文本字段。 然后在他們下面我有一個開關。 如果將開關設置為ON,則當用戶在注銷后訪問應用程序時,應自動填寫用戶的登錄詳細信息。 這是我的交換機代碼:

-(IBAction)rememberUser:(id)sender
{
    if(rememberMe.on == YES)
    {
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    NSString* textField1Text = mUserName.text;
    [defaults setObject:textField1Text forKey:@"textField1Text"];

    NSString *textField2Text = mPassword.text;
    [defaults setObject:textField2Text forKey:@"textField2Text"];
    }

}

我在viewDidLoad中添加了這個:

if(rememberMe.on == YES)
   {
    NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
    NSString *user = [def stringForKey:@"textField1Text"];

    NSString *pass = [def stringForKey:@"textField2Text"];

    mUserName.text = user;
    mPassword.text = pass;
   }

但是,注銷后,即使打開了開關,用戶名和文本字段也是空白的。 我第一次使用UISwitch和NSUserDefaults,因此我不確定我哪里出錯了。 請幫忙。

確保在setObject之后進行同步。 像這樣的東西:

-(IBAction)rememberUser:(id)sender
{
    if(rememberMe.on == YES)
    {
    NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
    NSString* textField1Text = mUserName.text;
    [defaults setObject:textField1Text forKey:@"textField1Text"];

    NSString *textField2Text = mPassword.text;
    [defaults setObject:textField2Text forKey:@"textField2Text"];
    [defaults synchronize];
    }

}

同步有助於存儲數據。有關NSUserDefaults的更多信息,請閱讀: http//mobile.tutsplus.com/tutorials/iphone/nsuserdefaults_iphone-sdk/

如其他人所述,您不應將NSUserDefaults用於敏感信息,請使用Keychain服務。

UICKeyChainStore簡化了事情。

腳步:
1.下載UICkeyChainStore
2.將h / m文件(2)拖到項目中
3.在構建階段添加安全框架
4.添加UICKeyChainStore.m以在構建階段編譯源代碼
5.根據需要將頭文件導入到類中

設置密碼:

[UICKeyChainStore setString:self.passwordField.text forKey:@"Password"];

獲取密碼:

[UICKeyChainStore stringForKey:@"Password"];

你可以嘗試添加

[defaults synchronize];

在rememberUser:方法內的if語句的末尾。 將對象添加到用戶默認值不會保留您的數據,因此您必須使用synchronize方法立即執行此操作。

你忘了同步..

添加此行

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:textField2Text forKey:@"textField2Text"];
[defaults synchronize];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM