我有一个枚举类型,类似这样:
enum Environment {
case Production
case Staging
case Dev
}
我想像这样在NSUserDefaults中保存一个实例:
func saveEnvironment(environment : Environment){
NSUserDefaults.standardUserDefaults().setObject(environment, forKey: kSavedEnvironmentDefaultsKey)
}
我知道Swift枚举不是NSObject,这使得保存它变得困难,但我不确定将其转换为可存储对象的最佳方法是什么。
enum
中使用rawValue
初始化器或属性遇到问题的人,请确保您的enum
扩展了您的rawValue
的类型。例如,在OP的示例中,Environment
扩展了String
的类型。第一次我错过了这个细节。 - Craig OtisString
或Int
进行文字转换,那么您甚至不需要为每个情况定义显式原始值,因为它们可以自动分配并与您扩展的类型一致:对于String
枚举,它是包含情况名称的字符串;对于Int
、Float
和Double
枚举,它是一个递增的数字。 - Antonio Favata.rawValue
(而不是Int(...)
或as Int
)。我只是说当您定义ConnectionType
枚举时,不需要为每个情况显式分配整数值。 - Antonio Favata