2016-11-02 3 views
0

私はHillegassの本、第5版、第10章、RaiseManの例を見ています。もちろん、Xcodeの8.1、スウィフト3.0.1では動作しませんSwift 3でraiseKEY検証機能をスローするための形式は何ですか?

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 //}

彼は、このスウィフト2のコードを示します。だから、私が試した:

`

列挙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を設定できませんでした。

`` `

誰かが右の構文を知っていれば、それは非常に参考になります。ありがとう。

答えて

関連する問題