首页 > 解决方案 > 向 NSTableView 添加行时数组索引超出范围

问题描述

我正在尝试创建一个硬币翻转模拟,它将在 NSTableView 中记录每次硬币翻转的结果。但是,当我插入一个包含掷硬币结果的新行时,Fatal error: Array index out of range尽管它试图插入的索引为 0,但我得到了一个。这是我的视图控制器类的一部分:

class CoinController: NSViewController {

    @IBOutlet weak var shownImage: NSImageView!
    @IBOutlet weak var shownText: NSTextField!
    @IBOutlet weak var coinSelected: NSPopUpButton!
    @IBOutlet weak var tableView: NSTableView!
    @objc dynamic var values: [String] = []

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func flipCoin(_ sender: Any) {
        let transition = CATransition()
        transition.type = CATransitionType.moveIn

        let rand = Bool.random()
        let currentCoin = coinSelected.titleOfSelectedItem ?? ""
        if rand == true {
            self.shownImage.image = NSImage(named:currentCoin+"Heads")
            values.append("Heads")
        } else {
            self.shownImage.image = NSImage(named:currentCoin+"Tails")
            values.append("Tails")
        }
        self.shownImage.layer?.add(transition, forKey: "transition")

        let last = values.count-1
        tableView.insertRows(at: [last], withAnimation: .slideDown)
        tableView.reloadData(forRowIndexes: [last], columnIndexes: IndexSet(integersIn: 0..<1))
        tableView.scrollRowToVisible(last)
        tableView.selectRowIndexes([last], byExtendingSelection: false)
    }

这是我的绑定:

在此处输入图像描述 在此处输入图像描述

在此处输入图像描述

标签: swiftxcodecocoanstableviewcocoa-bindings

解决方案


推荐阅读