Best practice zur Umsetzung einer failable Initialisierung in Swift

Mit dem folgenden code versuche ich zu definieren, die eine einfache model-Klasse und es ist failable-Initialisierer, die einen (json-) Wörterbuch als parameter auf. Die Initialisierung sollte zurück nil wenn der user-name ist nicht definiert in der original-json.

1.
Warum nicht den code zu kompilieren? Die Fehlermeldung sagt:

Alle gespeicherten Eigenschaften einer Instanz der Klasse initialisiert werden müssen, vor der Rückgabe nil aus einem Initialisierer.

Das macht keinen Sinn. Warum sollte ich initialisieren die Eigenschaften, wenn ich Plane, zurück nil?

2.
Ist mein Ansatz der richtige oder gibt es andere Ideen oder gemeinsame Muster zu erreichen mein Ziel?

class User: NSObject {

    let userName: String
    let isSuperUser: Bool = false
    let someDetails: [String]?

    init?(dictionary: NSDictionary) {
        if let value: String = dictionary["user_name"] as? String {
            userName = value
        }
        else {
           return nil
        }

        if let value: Bool = dictionary["super_user"] as? Bool {
            isSuperUser = value
        }

        someDetails = dictionary["some_details"] as? Array

        super.init()
    }
}

InformationsquelleAutor der Frage Kai Huppmann | 2014-10-21

Schreibe einen Kommentar