Dovresti sempre usare Keychain per archiviare nomi utente e password e poiché è archiviato in modo sicuro e accessibile solo per la tua app, non è necessario eliminarlo quando l'app si chiude (se questo era il tuo problema).
Apple fornisce un codice di esempio che archivia, legge ed elimina gli elementi del portachiavi e qui è come utilizzare la classe wrapper portachiavi da quell'esempio che semplifica notevolmente l'utilizzo del Keychain.
Includi Security.framework (in Xcode 3 fai clic con il pulsante destro del mouse sulla cartella frameworks e aggiungi framework esistente. In Xcode 4 seleziona il tuo progetto, quindi seleziona target, vai alla scheda Build Phases e fai clic su + sotto Link Binary With Files) e KeychainItemWrapper .h &. m file nel tuo progetto, #importa il file .h ovunque sia necessario utilizzare il portachiavi e quindi creare un'istanza di questa classe:
KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];
( YourAppLogin può essere qualsiasi cosa tu abbia scelto di chiamare il tuo articolo Portachiavi e puoi avere più elementi se necessario)
Quindi è possibile impostare il nome utente e la password utilizzando:
[keychainItem setObject:@"password you are saving" forKey:kSecValueData];
[keychainItem setObject:@"username you are saving" forKey:kSecAttrAccount];
Falli usare:
NSString *password = [keychainItem objectForKey:kSecValueData];
NSString *username = [keychainItem objectForKey:kSecAttrAccount];
Oppure cancellali usando:
[keychainItem resetKeychainItem];