I have many Smart Home devices that can be controlled from my Amazon Echo, however none of those devices can be controlled from Siri on my Apple Watch or iPhone. None are HomeKit compatible.
What I’ve done lets me control my Alexa Smart Home devices via Siri on my Apple Watch or iPhone. This solution is not elegant (it involves a Raspberry PI, HomeBridge and a speaker) but it does work…
Code here. Demo here:
Trying to create a simple WatchKit table, I hit the error shown in this blog post title.
You mileage may vary, but the eventual cause was that when I added my custom RowController class I accidentally added it to the wrong module … I added it to the main iOS app (WatchTest) instead of the Watch extension:
The first hint of this was when I was trying to reference the RowController when calling rowControllerAtIndex, and my custom row controller class could not be found:
var rootRow = rootTable.rowControllerAtIndex(0) as RootRowController
By this time I’d already set it as the RowController class for my table’s row in the storyboard, and had inadvertently referenced the wrong module:
I fixed the compilation error by adding my custom RowController to the Watch extension module, but accidentally added it to both modules:
Everything compiled but when I ran the log shows the error from the title: Error – unable to instantiate row controller class
I eventually figured out my mistake, and made sure that the row controller only belonged to the extension module:
And I made sure the correct module was referenced when defining the RowController in the storyboard:
It would be nice if the Watch App’s storyboard only saw classes in the Watch Extension’s module.