How can I return opaque type for generic class?
func makeFAQController() -> UIHostingController<some View> {
let viewModel = FAQViewModel()
let view = FAQView().environmentObject(viewModel)
let controller = UIHostingController(rootView: view)
return controller
}
Error: Cannot convert value of type 'UIHostingController<some View>' to type 'UIHostingController<FAQView>' in coercion
func makeFAQController() -> UIHostingController<FAQView> {
let viewModel = FAQViewModel()
let view = FAQView().environmentObject(viewModel)
let controller = UIHostingController(rootView: view)
return controller
}
Cannot convert value of type 'UIHostingController<some View>' to type 'UIHostingController<FAQView>' in coercion
I want to avoid type erasure if possible.
You should return base class (there is nothing more generic then base class, probably only meta NSObject
), so
func makeFAQController() -> UIViewController { // << here !!
let viewModel = FAQViewModel()
let view = FAQView().environmentObject(viewModel)
let controller = UIHostingController(rootView: view)
return controller
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments