I use the following code to retrieve the login credentials from the iPhone keychain:
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Test" accessGroup:nil];
NSString *username = [wrapper objectForKey:(id)kSecAttrAccount];
NSString *password = [wrapper objectForKey:(id)kSecValueData];
[wrapper release];
I'm under the impression that the first time a user launches the app, neither username nor password could be retrieved from the keychain, so username
and password
should be equal to nil
. I, however, was unable to print out any of these variables using NSLog
.
Any suggestions?
Your assumption is wrong- on creation, the "kSecAttrAccount" and "kSecValueData" are NOT set to nil. They are set to an empty string (that is, ""). So, this code will return true:
[username isEqualToString:@""] // returns true on creation