Swift 具有良好的编程风格和可选功能

Swift 具有良好的编程风格和可选功能,swift,optional,Swift,Optional,我想从NSUserdefaults中读取枚举参数。如果Userdefaults中没有任何设置,我希望它默认为某个值。有没有比我在这里用“if let”语句做的更好的方法(更优雅)呢?由于这是一个单例,我希望使用 如果GameState.learnLevel==Level.low{..} 我该怎么做 class GameState { var learnLevel:Level enum Level:Int { case low = 1,medium,high } class var sh

我想从NSUserdefaults中读取枚举参数。如果Userdefaults中没有任何设置,我希望它默认为某个值。有没有比我在这里用“if let”语句做的更好的方法(更优雅)呢?由于这是一个单例,我希望使用

如果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}

}

使用
nil
合并
??

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

除了输入正确的换行符之外,这似乎还可以。您正在从NSUserDefaults获取一个可能不存在的值,并从中设置一个必需的属性。如果没有线断,虽然很难看到你在做什么。