iOS Keychain在获取详细信息时崩溃

时间:2015-12-31 02:05:01

标签: ios keychain keychainitemwrapper

使用钥匙串将登录信息存储到我的应用程序时遇到一些问题。它完全正常,当我进出其他应用程序时会显示信息但是一旦我完全关闭应用程序并尝试重新打开它并单击以恢复应用程序崩溃的登录信息。我将附加代码和错误日志。我明白使用这个版本的钥匙串不是大多数人在网上阅读时似乎使用了替代的钥匙串脚本,但希望有人遇到这个问题。我有3个按钮和2个文本字段来测试它。一个用户名的文本字段,一个用于密码,然后我有一个登录按钮,用于保存信息,一个按钮用于查看信息,然后是一个注销按钮。

感谢。

  

Dec 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'* 第一次抛出调用堆栈:(0x180eed900 0x18055bf80   0x180ef461c 0x180ef15b8 0x180df568c 0x186529988 0x185c206f4   0x1000c0194 0x185c17e50 0x185c17dcc 0x185bffa88 0x185c176e4   0x185c17314 0x185c0fe30 0x185be04cc 0x185bde794 0x180ea4efc   0x180ea4990 0x180ea2690 0x180dd1680 0x1822e0088 0x185c48d90   0x1000c4980 0x1809728b8)12月31日01:58:13柯蒂斯 - iPhone   SpringBoard [15499]:HW kbd:无法将(null)设置为键盘   焦点Dec 31 01:58:13 Curtis-iPhone com.apple.xpc.launchd [1]   (UIKitApplication:uDropOff.uDropOff-3 [0x44ca] [18034]):   由于信号退出服务:中止陷阱:12月31日01:58:13   Curtis-iPhone诊断[15528]:无法找到偏移量   0x809679a4在共享缓存中用于arch'arm64'Dec 31 01:58:13   Curtis-iPhone ReportCrash [18035]:   platform_thread_get_unique_id匹配6392471 Dec 31 01:58:13   Curtis-iPhone ReportCrash [18035]:为...制定报告   尸体[18034] uDropOff 3 Dec 31 01:58:13柯蒂斯 - iPhone   ReportCrash [18035]:保存类型'109_uDropOff 3'报告(5 of   max 25)as / 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定位[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];


}

1 个答案:

答案 0 :(得分:0)

我自己修复了这段代码,通过将kSecValueData更改为kSecAttrService,一切正常,崩溃不再发生。