iosswiftwatchkitwkinterfacetablewkinterfacecontroller

WKInterfaceTable & setNumberOfRows get crash "unexpectedly found nil while unwrapping an Optional value"


I'm working with WatchKit, I have a simple interface with only a table but I get an error with just a few lines of code, maybe I forgot something really basic.

My interface:

the row inside the table has the identifier:

and the custom class:

The controller is implemented by this code:

import WatchKit
import Foundation

class ActiveListController: WKInterfaceController
{
    @IBOutlet weak var tableView: WKInterfaceTable!

    override func awakeWithContext(context: AnyObject?)
    {
        super.awakeWithContext(context)

        loadData()
    }

    override func willActivate()
    {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
    }

    override func didDeactivate()
    {
        // This method is called when watch view controller is no longer visible
        super.didDeactivate()
    }

    func loadData()
    {
        tableView.setNumberOfRows(10, withRowType: "ItemRow") // GET ERROR

        for index in 0...9
        {
            let row = tableView.rowControllerAtIndex(index) as! ItemRow

            row.nameLabel.setText("test")
        }
    }

}

and obviously I have my custom class for the single row

import Foundation
import WatchKit

class ItemRow : NSObject
{
    @IBOutlet weak var checkImage: WKInterfaceImage!
    @IBOutlet weak var nameLabel: WKInterfaceLabel!
}

So when I run the app I get error when I try to set the number of rows but really I can't understand what is nil:

fatal error: unexpectedly found nil while unwrapping an Optional value

Maybe it's a simple mistake, maybe not but please help me :\


Solution

  • finally I found my mistake.

    I forgot to set my only one interface for Apple Watch as Initial Controller.

    Yep, unbelievable and embarrassing but that's it. The error that provides Xcode it's not the best , it would be better something like "initial controller missing".

    I hope my question & answer can help someone one day :)