gpt4 book ai didi

iOS从钥匙串(keychain)中恢复登录框中的密码

转载 作者:行者123 更新时间:2023-11-28 18:34:06 25 4
gpt4 key购买 nike

我像这样将用户名/密码保存到钥匙串(keychain):

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];

[keychainItem setObject:usernameField.text forKey:(__bridge id)(kSecAttrAccount)];
[keychainItem setObject:passwordField.text forKey:(__bridge id)(kSecValueData)];

然后我检索用户名密码:

NSString *username = [keychainItem objectForKey:(__bridge id)(kSecAttrAccount)];
NSString *password = [keychainItem objectForKey:(__bridge id)(kSecValueData)];

如果用户选中记住我,我想自动将它们放入用户名和密码登录框中:

if ([_rememberMeSwitch isOn]) {
usernameField.text = username;
}

if ([_rememberMeSwitch isOn]) {
passwordField.text = password;
}

这对用户名很好用,但密码显然作为 nscfdata 保存在钥匙串(keychain)中,因为当我尝试将密码插入 passwordField.text 时,我得到:

[__NSCFData _encodingCantBeStoredInEightBitCFString]: unrecognized selector sent to instance

我正在尝试做的只是被认为是不好的做法,还是有一个简单的方法来解决这个问题?

最佳答案

文档对此很清楚:kSecValueData 应该是 NSData/CFDataRef => 所以你必须将你的字符串转换成数据

存储

将您的密码文本转换为 NSData

NSData *pwdData = [passwordField.text dataUsingEncoding:NSUTF8StringEncoding];

阅读

将 NSData 转换成你的密码

NSData *pwdData = [keychainItem objectForKey:(__bridge id)(kSecValueData)];
NSString *password = [[NSString alloc] initWithData:pwdData encoding:NSUTF8StringEncoding];
passwordField.text = password;

关于iOS从钥匙串(keychain)中恢复登录框中的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22265096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com