Beste Übung zum Implementieren eines fehlerhaften Initialisierers in Swift

Mit dem folgenden Code versuche ich, eine einfache Modellklasse und ihren fehlerhaften Initialisierer zu definieren, der ein (json-) Wörterbuch als Parameter verwendet. Der Initialisierer sollte @ zurückgebnil wenn der Benutzername im ursprünglichen json nicht definiert ist.

1. Warum kompiliert der Code nicht? Die Fehlermeldung lautet:

Alle gespeicherten Eigenschaften einer Klasseninstanz müssen initialisiert werden, bevor nil von einem Initialisierer zurückgegeben wird.

Das ergibt keinen Sinn. Warum sollte ich diese Eigenschaften initialisieren, wenn ich vorhabe, @ zurückzugebenil?

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

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()
    }
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage