저는 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을 설정할 수 없습니다.
```
사람이 올바른 구문을 알고 있다면, 그것은 매우 도움이 될 것입니다. 감사.