我正在使用在这里找到的钥匙串包装器:

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/

10-10 20:58