2014-12-16 1 views
2

NSUserdefaults에서 enum 매개 변수를 읽고 싶습니다. Userdefaults에 아무 것도 설정되어 있지 않은 경우 특정 값을 기본값으로 사용하고 싶습니다. 이 "if let"문을 사용하여 수행 한 것보다 더 나은 (더 우아한) 방법이 있습니까? 그리고이 같은 싱글 내가 그렇게 얼마나옵션을 사용한 좋은 프로그래밍 스타일

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

다른 것은 좋아 보인다 후 휴식. NSUserDefaults에서 값을 가져오고 거기에 없을 수도 있고 거기에서 필요한 속성을 설정할 수 있습니다. 줄 바꿈 없이는 당신이하고있는 것을보기가 어렵습니다. – Fogmeister

답변

3

사용 niloperator?? 병합 : 올바른 라인에서 퍼팅보다

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