2016-11-02 4 views
0

Ich gehe durch das Hillegass Buch, 5. Ausgabe, 10. Kapitel, RaiseMan Beispiel.Was ist die Form für eine werfende raiseKEY Validierungsfunktion in Swift 3?

Er zeigt diesen Swift 2 Code:

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

, die in Xcode 8.1, Swift 3.0.1, natürlich nicht funktioniert. Also habe ich versucht:

`` `

Enum EmployeeError: Fehler { Fall badRaise

}

func validateRaise (raiseNumberPointer: AutoreleasingUnsafeMutablePointer) wirft {

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."] 
} 

}

`` `

aber das Setzen eines Haltepunkts zeigte mir, dass dieser Code nie aufgerufen wird. In IB ging ich natürlich zum entsprechenden NSTextField und checkte sofort wie angewiesen ab. dies ist der Fehler, den ich habe:

`` `

2016.11.02 07: 46: 31,163900 RaiseMan [19240: 1489479] [General] Eine abgefangene Ausnahme

2016-11- angehoben 02 07: 46: 31.163986 RaiseMan [19240: 1489479] [Allgemein] [setNilValueForKey]: konnte den Wert für die Schlüsselerhöhung nicht auf Null setzen.

`` `

, wenn jemand die richtige Syntax weiß, das wäre sehr hilfreich sein. Vielen Dank.

Antwort

Verwandte Themen