I think the current way to initiate models in a Failable Initializer `init?()`
is overly verbose and should be shortened down so less boilerplate should be
needed.
The current way:
```
let someProperty: Any
let anotherProperty: Any
init?(data: [String: Any]) {
guard
let someProperty = data["some_key"],
let anotherProperty = data["another_key"]
else {
return nil
}
self. someProperty = someProperty
self. anotherProperty = anotherProperty
}
```
As you can see we had to use the properties twice (this would also be the case
of `if let`) making the initializer twice as long as necessary and becomes a
pain to implement when having more than 1 property.
My idea is extending the power of the `guard` statement
Idea:
init?(data: [String: Any]) {
guard
someProperty = data["some_key"], // Currently fails
because `self` us used before all stored properties are initialized
anotherProperty = data["another_key"]
else {
return nil
}
}
}
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution