程序流出现问题



我是 Swift 的新手,很难理解处理事物的逻辑流程。 我的程序中有几件事似乎以我意想不到的顺序运行,在在下面的代码中,我需要执行函数"getValues"(当用户从我的摘要表中选择了一行时(

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if tableView.cellForRow(at: indexPath)?.accessoryType == .checkmark {
        tableView.cellForRow(at: indexPath)?.accessoryType = .none
    } else {
        tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
    }
    tableView.deselectRow(at: indexPath, animated: true)
    gameNo = indexPath.row
    getValues()
    vRatings.append(defRat[0])
    hRatings.append(defRat[1])
    self.performSegue(withIdentifier: "gameSelected", sender: self)
}
func getValues() { // (it is here where the array "defRat" gets populated 

但是,当我在调试模式下遍历代码时,对 getValues 的调用会被跳过。 来自传统编码(COBOL,FORTRAN等(的背景,这对我来说毫无意义。 该程序正在破坏非法索引,因为"defRat"数组从未填充过。

希望有一个简单的答案...提前非常感谢。

而不是func getValues() {,执行func getValues() -> [String] { 。(将字符串替换为数组中的任何数组。然后,您可以返回一个字符串数组(或任何类型 defRat(,而不是更新 defRat。 在tableView函数中,将getValues()替换为var exampleVar = getValues(),并且可以在追加exampleVar时替换defRat。 总之,它应该看起来像这样:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if tableView.cellForRow(at: indexPath)?.accessoryType == .checkmark {
        tableView.cellForRow(at: indexPath)?.accessoryType = .none
    } else {
        tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
    }
    tableView.deselectRow(at: indexPath, animated: true)
    gameNo = indexPath.row
   var exampleVar =  getValues()
    vRatings.append(exampleVar[0])
    hRatings.append(exampleVar[1])
    self.performSegue(withIdentifier: "gameSelected", sender: self)
}
func getValues() -> [String] {
    //Whatever code is being executed here
    var foo:[String]  = []
    //More stuff happens that changes foo
    return foo
}

相关内容

  • 没有找到相关文章

最新更新