5

私は 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なのか理解できません:

致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました

単純な間違いかもしれませんが、そうではないかもしれませんが、助けてください :\

4

2 に答える 2

2

コード内のforループが開始され、行が 0 ベースであるため1...10である必要があります0...9

于 2015-06-12T10:22:26.377 に答える
2

最後に私は自分の間違いを見つけました。

Apple Watch 用の唯一のインターフェイスを初期コントローラーとして設定するのを忘れていました。

ええ、信じられないほど恥ずかしいですが、それだけです。Xcodeを提供するエラーは最高ではありません。「初期コントローラーが見つかりません」などのほうがよいでしょう。

私の質問と回答がいつか誰かを助けることができることを願っています:)

于 2015-06-14T17:18:10.087 に答える