2012-08-23 7 views
10

Sono nuovo a objective C, Ho creato un'applicazione in cui ho utilizzato sia NSUserDefault e Keychain per memorizzare il mio nome utente e password. Ma non posso distinguere entrambi. Si prega di aiutare a differenziare entrambi.Differenza tra portachiavi e NSUserDefault?

Grazie.

+0

Questo è un commento molto evidente solo per semplificare la comprensione del portachiavi. Keychain e NSUserDefault sono ** molto simili **. Per entrambi devi semplicemente fare qualcosa come * impostare objectforKey e quindi ObjectForKey leggerlo * Entrambi memorizzano gli hash. Keychain e NSUserDefault saranno entrambi in modalità sandbox, ma il portachiavi non verrà deallocato dalla memoria anche se la app viene disinstallata. Sarà ancora lì la prossima volta che installerai. C'è anche un portachiavi per iCloud che funziona su più dispositivi, ma questa è una storia diversa – Honey

risposta

10

A portachiavi è un contenitore crittografato che contiene password per più applicazioni e servizi sicuri. Apple Inc. utilizza portachiavi come sistema di gestione delle password in Mac OS e iOS.

NSUserDefaults Fornisce un modo per la personalizzazione del comportamento dell'applicazione in base alle preferenze dell'utente. Appartiene al framework Foundation per Cocoa e Cocoa Touch.

ho ricevuto questo da Tag Informazioni NSUserdefaults e keychain

4

Aggiunta: quando abbiamo salvato Username e Password. e Rimuovi app dal dispositivo.

In Keychain: UserName e Password sono ancora disponibili.

In NSUserDefaults: UserName e Password rimuovono anche dal dispositivo con l'app.

1

Cercare di evitare il salvataggio dei dati localmente il più possibile.

Keychain - portachiavi è sicuro & modo crittografato per salvare i dati di storage di piccole dimensioni, come nome utente, password ecc Attenzione dati portachiavi può accessibile da dispositivi jailbroken. È possibile ottenere il codice di esempio Apple da here.

Keychain Sharing - Attivare la condivisione dei portachiavi permette alle app per condividere le password nel portachiavi con altre applicazioni sviluppate dal vostro team. Supponiamo di aver creato due app in cui gli utenti possono accedere allo stesso account. Sarebbe bello avere la possibilità di condividere le informazioni di accesso tra queste app. In questo modo l'utente dovrà solo accedere una volta in una delle app.

UserDefaults Un'interfaccia per database di default per l'utente, in cui memorizzare coppie chiave-valore persistentemente attraverso invocazioni della vostra applicazione su un determinato dispositivo. UserDefaults non è un modo sicuro per salvare i dati privati. UserDefaults vengono memorizzati come plist a livello locale, Chiunque può monitorare in ./Library/Preferences/com.mycompany.MyAppName.plist