Sebastian Zalewski
Sebastian Zalewski

Reputation: 131

How to inject viewModel class into WKInterfaceController?

I'm trying to inject my viewModel class to WKInterfaceController, in my InterfaceController I have set property but when I try to use it in func awake(withContext context: Any?), it's nil.

So the way I was trying to do it: setting up the container in ExtensionDelegate, and registering to it my interferenceController with viewModel class in method onInitCompleted.

My code :

https://pastebin.com/jFaLHi2m

class ExtensionDelegate: NSObject {

    let container = Container()
    func applicationDidFinishLaunching() {
       setupContainer()
    }

   func setupContainer(){
   container.register(HomeInterfaceController.self) { _ in HomeInterfaceController()
            }.initCompleted { r, c in
                c.viewModel = r.resolve(HomeViewModel.self)
        }
    }
}

class HomeInterfaceController: WKInterfaceController {

    var viewModel: HomeViewModel!

    override func willActivate() {
        viewModel.fetch() // ----> here I get exception
        super.willActivate()
    }
}

On the line where I try to use my viewModel I get:

Thread 1: EXC_BREAKPOINT (code=1, subcode=0x524abc)

Do you know how to properly inject class into WKInterfaceController?

Upvotes: 3

Views: 147

Answers (0)

Related Questions