I'm using the ARCified version of KeychainItemWrapper available at github, and I can't get it to store both email and password.
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];
I works perfectly as long as I store an email... that don't have an at sign (@) it. Otherwise, I get the error
*** Assertion failure in -[KeychainItemWrapper writeToKeychain]
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.'
Which comes from those lines
result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL);
NSAssert( result == noErr, @"Couldn't add the Keychain Item." );
Do you have any idea about what can be going wrong here ?
Thanks
Well, I just found the answer following the advice on that page iOS KeychainItemWrapper not updating, which is to add
I know its an old question, but that was happening to me and the above answers did not fix my problem. In my case I was accessing the keychain when the phone was locked. Finally I got to solve it by using this just after init the keychain.
It seems that keychain does not let you access it unless your phone is unlocked, by default.
More info here : http://b2cloud.com.au/tutorial/using-the-keychain-to-store-passwords-on-ios/