swift - 程序流程有问题

原文 标签 swift program-flow

我是 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 

但是,当我在 Debug模式下浏览代码时,会跳过对 getValues 的调用。来自传统编码(COBOL、FORTRAN 等)的背景,这对我来说毫无意义。该程序因非法索引而崩溃,因为从未填充过“defRat”数组。

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

最佳答案

而不是 func getValues() { , 做 func getValues() -> [String] { . (将 String 替换为数组中的任何数组。)然后,您可以返回一个 String 数组(或任何类型的 defRat),而不是更新 defRat。在 tableView函数,替换getValues()var exampleVar = getValues() , 你可以替换 defRat当您附加 exampleVar .总之,它应该是这样的:

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
}

关于swift - 程序流程有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393137/

相关文章:

ios - CLPlacemark 到 iOS 9 中的字符串

java - Java:为什么此代码不起作用?无限循环?

ios - 在UItableView处理多个选定的行

ios - iOS Swift:无法操作字符串:“String”类型的值没有成员“firstIndex”

java - java中的try-catch-finally block

python - 在 Python 中破译大型程序流

java - 这是短路的一个例子吗?

java - 奇怪的程序流程

ios - 动态加载的 UIStackView 上的分离 Controller 问题

ios-simulator - 在非iPhone 5s模拟器上运行任何应用程序时,找不到'/','*',失败的重载