良好的编程风格与选项

时间:2014-12-16 08:47:15

标签: swift optional

我想从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}

}

1 个答案:

答案 0 :(得分:3)

使用nil合并operator ??

    let learnLevel = Level(rawValue: NSUserDefaults.standardUserDefaults().integerForKey("learnLevel"))        
    self.learnLevel = learnLevel ?? Level.low