无法在钥匙串中存储电子邮件(KeychainItemWrapper)

我正在使用github上提供的KeychainItemWrapper的ARCified版本,我无法获得它存储电子邮件和密码。

KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myApp" accessGroup:@"MY_APP.com.yourcompany.GenericKeychainSuite"]; [keychainItem setObject:[self.email dataUsingEncoding:NSUTF8StringEncoding] forKey:(__bridge id)kSecAttrAccount]; [keychainItem setObject:self.password forKey:(__bridge id)kSecValueData]; 

只要我存储一封电子邮件,我就完美地工作了…没有符号(@)。 否则,我得到的错误

 *** Assertion failure in -[KeychainItemWrapper writeToKeychain] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.' 

哪些来自这些线路

 result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL); NSAssert( result == noErr, @"Couldn't add the Keychain Item." ); 

你有什么想法可以在这里出错吗?

谢谢

那么,我只是find了该页面上的build议的答案iOS KeychainItemWrapper不更新 ,这是添加

 [keychainWrapper setObject:@"Myappstring" forKey: (id)kSecAttrService]; 

我知道这是一个古老的问题,但这是发生在我身上,上述答案并没有解决我的问题。 在我的情况下,当手机被locking时,我正在访问钥匙串。 最后,我需要在初始化钥匙串之后使用它来解决这个问题。

 keychainWrapper.setObject(kSecAttrAccessibleAlways, forKey: kSecAttrAccessible) 

似乎钥匙串不会让你访问它,除非你的手机是在默认情况下解锁。

更多信息在这里: http : //b2cloud.com.au/tutorial/using-the-keychain-to-store-passwords-on-ios/