2016-06-24 8 views
0
struct TimeMark: OptionSetType { 

private enum TimeMark : Int,CustomStringConvertible { 
    case Header=0, Current=1 

    var description : String { 
     var shift = 0 
     while (rawValue >> shift != 1){ shift += 1 } 
     return ["Header", "Current"][shift] 
    } 
} 

let rawValue: Int 

internal init(rawValue: Int) { 
    self.rawValue = rawValue 
} 
private init(_ timeMark: TimeMark) { self.rawValue = timeMark.rawValue 
} 

static let Header = 0 
static let Current = 1 

} 

let mark: TimeMark 

let rounded: Bool = mark == TimeMark.Current 

마지막 줄에 거부가 나타납니다. swift 및 optionSetType 구조 값에 다음 코드를 사용하여 인수 유형을 거부하는 이유는 무엇입니까?

enter image description here

는 또한 === 내 비교 연산자를 변경 (나는 일 것이라고 생각하지 않았다) 그뿐만 아니라 작동하지 않았다.

답변

0

속성을 사용하거나 액세스하기 전에 초기화해야합니다. 이것을 시도하십시오 :

let mark = TimeMark() 
let rounded = (mark.rawValue == TimeMark.Current) 
+0

ty, 이것은 저에게 효과적입니다. – Chris