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