I found myself using a lot of implicitly unwrapped optionals when initialiser injection would not work or when creating mvvm modules for examples:
class TodoView: UIViewController {
var viewModel: TodoViewModelProtocol!
}
Not only it doesn't look so good, but its also a pain to always force unwrap if I need to use a switch statement on an explicitly unwrapped optional variable for example.
Is there any way to get rid of the implicitly unwrapped optional, for example using @properyWrapper
in swift 5?
You can simulate implicitly unwrapped optionals with a property wrapper as follows:
Then you can even use possibly uninitialized fields storing optionals without accidentially unwrapping the optional. Something like this: