Ho un enum come questo:Come posso memorizzare un valore enum Swift in NSUserDefaults
enum Environment {
case Production
case Staging
case Dev
}
e mi piacerebbe per salvare un caso in NSUserDefaults come questo:
func saveEnvironment(environment : Environment){
NSUserDefaults.standardUserDefaults().setObject(environment, forKey: kSavedEnvironmentDefaultsKey)
}
ho capito che un enum di Swift non è un NSObject, e questo rende difficile il salvataggio, ma non sono sicuro di quale sia il modo migliore per convertirlo in qualcosa di memorizzabile.
E per chi cerca la lettura ... myenv = Ambiente (rawValue: defaults.stringForKey (kSavedEnvironmentDefaultsKey))! –
Per chiunque abbia problemi con l'inizializzatore 'rawValue' o la proprietà sul tuo enum, assicurati che il tuo enum estenda il tipo di' rawValue'. Ad esempio, nell'esempio di OP, 'Environment' estende' String'. Mi è mancata la prima volta. –
Dato che non si ha alcun controllo su ciò che è memorizzato nelle preferenze, è necessario verificare che defaults.stringForKey non sia nullo, e in tal caso o se l'Ambiente finisce nulla, sostituirlo con un valore predefinito. – gnasher729