使用钥匙串将登录信息存储到我的应用程序时遇到了一些问题。它工作得很好,并且会在我进出其他应用程序时显示信息,但是一旦我完全关闭应用程序并尝试重新打开它并单击以恢复登录信息,应用程序就会崩溃。我将附上代码以及错误日志。我确实明白,我在网上阅读的大多数人都没有使用这个版本的钥匙串,人们似乎使用替代钥匙串脚本,但希望有人遇到了这个问题。我有 3 个按钮和 2 个文本字段来测试它。一个用于用户名的文本字段,一个用于密码的文本字段,然后我有一个用于登录的按钮来保存信息,一个用于查看信息的按钮,然后是一个注销按钮。
谢谢。
12 月 31 日 01:58:13 Curtis-iPhone uDropOff 3[18034] : -[__NSCFData rangeOfCharacterFromSet:]: 无法识别的选择器发送到实例 0x147ed0338 Dec 31 01:58:13 Curtis-iPhone uDropOff 3[18034] : * 终止应用程序未捕获的异常'NSInvalidArgumentException',原因:'-[__NSCFData rangeOfCharacterFromSet:]:无法识别的选择器发送到实例 0x147ed0338'*13 Curtis-iPhone ReportCrash[18035]:为尸体制定报告[18034] uDropOff 3 Dec 31 01:58:13 Curtis-iPhone ReportCrash[18035]:保存类型“109_uDropOff 3”报告(最多 25 个中的 5 个)为 /var/移动/图书馆/日志/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips 12 月 31 日 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序 'UIKitApplication:uDropOff.uDropOff-3[0x44ca]' 崩溃。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态 报告(最多 25 个中的 5 个)为 /var/mobile/Library/Logs/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips Dec 31 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序'UIKitApplication: uDropOff.uDropOff-3[0x44ca]' 崩溃了。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态 报告(最多 25 个中的 5 个)为 /var/mobile/Library/Logs/CrashReporter/uDropOff 3_2015-12-31-015813_Curtis-iPhone.ips Dec 31 01:58:13 Curtis-iPhone SpringBoard[15499]:应用程序'UIKitApplication: uDropOff.uDropOff-3[0x44ca]' 崩溃了。12 月 31 日 01:58:13 Curtis-iPhone UserEventAgent[15467] : 20372720635010: id=uDropOff.uDropOff-3 pid=18034, state=0 Dec 31 01:58:23 Curtis-iPhone locationd[15505] : 位置图标现在应该处于“非活动”状态
- (void)viewDidLoad
{
[super viewDidLoad];
keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"uDropOffLoginData" accessGroup:nil];
}
- (IBAction)viewkeychain {
if ([[keychain objectForKey:(id)kSecAttrAccount] isEqual: @""])
{
self.username.text = @"nousername";
self.password.text = @"nopassword";
}
else
{
self.username.text = [keychain objectForKey:(id)kSecAttrAccount];
self.password.text = [keychain objectForKey:(id)kSecValueData];
}
}
- (IBAction)logout {
[keychain resetKeychainItem];
}
- (IBAction)signin {
[keychain setObject:[_username text] forKey:(id)kSecAttrAccount];
[keychain setObject:[_password text] forKey:(id)kSecValueData];
}