我想从NSUserdefaults读取一个枚举参数。如果在Userdefaults中没有设置任何内容,我希望它默认为某个值。有没有比我在这里用“if let”声明做的更好的方式(更优雅)呢?因为这是一个Singleton,我想使用
访问代码其他部分的值 if GameState.learnLevel == Level.low {..}
我该怎么做?
class GameState {
var learnLevel:Level
enum Level:Int {
case low = 1,medium,high
}
class var sharedInstance: GameState {
return _SomeManagerSharedInstance
}
init(){
// load games state
let learnLevel = Level(rawValue: NSUserDefaults.standardUserDefaults().integerForKey("learnLevel"))
if let learnLevel1 = learnLevel {self.learnLevel = learnLevel1} else {self.learnLevel = Level.low}
}
答案 0 :(得分:3)
使用nil
合并operator ??
:
let learnLevel = Level(rawValue: NSUserDefaults.standardUserDefaults().integerForKey("learnLevel"))
self.learnLevel = learnLevel ?? Level.low