WKInterfaceTable и setNumberOfRows неожиданно обнаруживают сбой при распаковке необязательного значения

Я работаю с WatchKit, у меня простой интерфейс только с таблицей, но я получаю сообщение об ошибке всего в нескольких строках кода, возможно, я забыл что-то действительно основное.

Мой интерфейс:

строка внутри таблицы имеет идентификатор:

и пользовательский класс:

Контроллер реализован этим кодом:

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")
        }
    }

}

и, очевидно, у меня есть собственный класс для одной строки

import Foundation
import WatchKit

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

Поэтому, когда я запускаю приложение, я получаю сообщение об ошибке, когда пытаюсь установить количество строк, но на самом деле я не могу понять, что такое ноль:

фатальная ошибка: неожиданно найдено nil при развертывании необязательного значения

Может быть, это простая ошибка, а может и нет, но, пожалуйста, помогите мне :\


person Massimo Polimeni    schedule 12.06.2015    source источник


Ответы (2)


Цикл for в вашем коде начинается с 1...10, и он должен быть 0...9, потому что строки основаны на 0.

person Juan Carlos Ospina Gonzalez    schedule 12.06.2015
comment
спасибо за подсказку, но это не вызвало сбой, настоящая проблема - строка выше - person Massimo Polimeni; 12.06.2015
comment
ммм, это действительно странно. Ну и еще один совет: проверьте правильность настройки. Например: в моем случае, когда я указал пользовательский класс, поле модуля автоматически заполнилось чем-то вроде wktest_WatchKit_Extension (я назвал свой проект wktest), и я вижу, что на снимке экрана это не так. Если вы можете опубликовать полный проект где-нибудь, я мог бы посмотреть. Здоровья и удачи. - person Juan Carlos Ospina Gonzalez; 12.06.2015
comment
нет, спасибо, пока я начал щедрость и исправить для :) - person Massimo Polimeni; 14.06.2015
comment
Решил сам, но решил отдать свои 50 баллов единственному человеку, который пытался мне помочь ;) - person Massimo Polimeni; 15.06.2015

наконец я нашел свою ошибку.

Я забыл установить свой единственный интерфейс для Apple Watch в качестве начального контроллера.

Да, невероятно и неловко, но это все. Ошибка, которую выдает Xcode, не самая лучшая, лучше бы что-то вроде "отсутствует начальный контроллер".

Я надеюсь, что мой вопрос и ответ могут помочь кому-то однажды :)

person Massimo Polimeni    schedule 14.06.2015