0

ユーザーが[覚えている]チェックボックスをオンにしたときにパスワードを保存したい。私はこのようなコードを持っています:これは正しいですか?

Appdelegate.mで

@property(strong,nonatomic)NSString *savedno;

.mファイル内

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];

    self.navcontrol =[[UINavigationController alloc]initWithRootViewController:self.viewController ];

    self.window.rootViewController = self.navcontrol;
    [self.window makeKeyAndVisible];

    self.savedno=[[NSUserDefaults standardUserDefaults]objectForKey:@"pass"];

    if(savedno==nil)
    {
        NSDictionary *saveDict=[NSDictionary dictionaryWithObject:savedno forKey:@"pass"];
        [[NSUserDefaults standardUserDefaults]registerDefaults:saveDict];
    }
    return YES;
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    /*
     Called when the application is about to terminate.
     Save data if appropriate.
     See also applicationDidEnterBackground:.
     */

    NSUserDefaults *userdefault=[NSUserDefaults standardUserDefaults];
    [userdefault setObject:savedno forKey:@"pass"];
}

//ViewDelegate.mファイル

//チェックボックスのイベント

-(IBAction)check:(id)sender
{
    if (checkboxSelected == 0)
    {
        [checkboxButton setSelected:YES];
        [checkboxButton setImage:[UIImage imageNamed:@"checkbox-checked.png"]forState:UIControlStateNormal];

        // userdefault=[NSUserDefaults standardUserDefaults];
        // [userdefault setObject:user.text forKey:@"user"];
        // [userdefault setObject:pass.text forKey:@"pass"];
        self.callno=pass.text;
        pass.text=self.callno;
        AppDelegate *appdelegate=[[UIApplication sharedApplication]delegate];
        appdelegate.savedno=self.callno;

        NSLog(@"Data saved");    
        checkboxSelected = 1;        
    }
    else
    {
        [checkboxButton setSelected:NO];
        [checkboxButton setImage:[UIImage imageNamed:@"checkbox.png"]forState:UIControlStateNormal];                                 
        user.text=@"";
        pass.text=@"";
        checkboxSelected = 0;
    }
}

- (void)viewDidLoad
{
    user.clearButtonMode=UITextFieldViewModeWhileEditing;

    AppDelegate *appdel=[[UIApplication sharedApplication]delegate];

    if([user.text isEqualToString:@"bhoomi"])
    {
        pass.text=appdel.savedno;
    }
    [super viewDidLoad];

    checkboxSelected = 0;

    // Do any additional setup after loading the view, typically from a nib.
}
`
4

5 に答える 5

7

しないでください。NSUserDefaultsパスワードなどの機密情報の場所ではありません。代わりに、KeyChainを使用してください。

于 2012-07-03T10:03:08.767 に答える
3

パスワードなどの情報を保存するには、キーチェーンを使用する必要があります。

SFHFKeychainUtilsを見てください。これにより、アプリでキーチェーンを簡単に使用できるようになります。これは、storeUserName:andPassword:とgetPasswordForUsernameの2つのメソッドを提供します。これにより、簡単で安全になります。

于 2012-07-03T10:03:55.983 に答える
1

ユーザーのデフォルトに保存するには、次の手順を実行します

[[NSUserDefaults standardUserDefaults] setValue:@"YourPassword" forKey:@"passowrd"];
//then call
[[NSUserDefaults standardUserDefaults] synchronize];

それを取り戻すには

NSString *password = [[NSUserDefaults standardUserDefaults] valueForKey:@"password"];
于 2012-07-03T10:00:03.210 に答える
1

NSUserDefaultsに値を設定した後、保存するには1回同期する必要があります。これを行うには、次のステートメントを使用します。

[[NSUserDefaults standardUserDefaults] synchronize];

お役に立てれば。

編集:

于 2012-07-03T10:00:09.667 に答える
0

このコードを使用してください...

NSUserDefault *userDefault = [NSUserDefaults standardUserDefaults];

[userDefault  setValue:pass_str forKey:@"pass"];

[userDefault  synchronize];

これがあなたを助けるかもしれません...

于 2012-07-03T10:13:57.120 に答える