我正在使用在这里找到的钥匙串包装器:
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'而终止应用程序,原因:'-[___ ZZeroData _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/