2016-11-02 3 views
0

저는 Hillegass 책, 제 5 판, 제 10 장, RaiseMan 예를 살펴 보겠습니다.Swift 3에서 raiseKEY 유효성 검사 기능을 던지는 형식은 무엇입니까?

그는이 스위프트 2 코드를 나타냅니다 물론, 엑스 코드 8.1, 스위프트 3.0.1에서 작동하지 않습니다

class Employee: NSObject { var name: String? = "New Employee" var raise: Float = 0.05 } // //func validateRaise(raiseNumberPointer: AutoreleasingUnsafeMutablePointer<NSNumber?>, error outError: NSErrorPointer) -> Bool { //
// let raiseNumber = raiseNumberPointer.pointee // if raiseNumber == nil { // let domain = "UserInputValidationErrorDomain" // let code = 0 // let userInfo = [NSLocalizedDescriptionKey : "An employee's raise must be a number."] // outError?.pointee = NSError(domain: domain, code: code, userInfo: userInfo) // return false // } //
// return true //}

. 그래서 시도 :

```

열거 EmployeeError : 오류 { 경우 badRaise

}

validateRaise (raiseNumberPointer : AutoreleasingUnsafeMutablePointer가) FUNC 발생 {

let i = 1 

do { 
    guard let raiseNumber = try raiseNumberPointer.pointee else { 
     throw EmployeeError.badRaise 
    } 
    let domain = "UserInputValidationErrorDomain" 
    let code = 0 
    let userInfo = [NSLocalizedDescriptionKey : "An employee's raise must be a number."] 
} 

}

```

그러나 중단 점을 설정하면이 코드가 호출되지 않는다는 것을 알 수 있습니다. IB에서, 분명히 알맞은 NSTextField에 가서 지침에 따라 즉시 유효성 검사를 체크합니다.

```

2016년 11월 2일 : 07 : 46 : 이것은 내가 가진 오류가 31.163900 RaiseMan [19240 : 1489479] [일반]이 캐치되지 않는 예외가 발생했다

2016-11- 02 07 : 46 : 31.163986 RaiseMan [19240 : 1489479] [일반] [setNilValueForKey] : 키 인상 값으로 nil을 설정할 수 없습니다.

```

사람이 올바른 구문을 알고 있다면, 그것은 매우 도움이 될 것입니다. 감사.

답변