[英]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.