我正在使用此处找到的钥匙串(keychain)包装器:
https://gist.github.com/1170641
像这样:
.h:
#import "KeychainItemWrapper.h"
KeychainItemWrapper *keychainItem;
.m:
keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"login" accessGroup:nil];
NSString *password = [keychainItem objectForKey:(__bridge id)kSecValueData];
NSString *username = [keychainItem objectForKey:(__bridge id)kSecAttrAccount];
然后它崩溃了:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[_NSZeroData _fastCharacterContents]:发送到实例 0x14dcba60 的无法识别的选择器”
编辑:
感谢回答问题的用户,崩溃不再存在,但当我检索用户名或密码时,它们有时会被交换,我的意思是 80% 的时间。
最佳答案
编辑:
我正在使用 kSecValueData,但在 KeychainItemWrapper.m 中注释掉了 //#define PASSWORD_USES_DATA
。此外,我开始使用 resetKeychainItem
而不是尝试自己覆盖这些值。
旧答案: 我遇到了这个问题,直到我将 kSecValueData 更改为 kSecAttrService,它也可以根据 SecItem.h 用于密码。现在一切似乎都工作正常(设置和检索)。
关于ios - 由于未捕获的异常 'NSInvalidArgumentException',钥匙串(keychain)包装器终止应用程序,原因 : '-[_NSZeroData _fastCharacterContents],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20202475/