变量' myCellChoice'在didSelectRowAt indexPath函数中的if语句中从未发生过变异

时间:2018-04-01 21:36:57

标签: ios swift if-statement

我的函数didSelectRowAt indexPath里面有一个if语句。

myButtonChoiceString2成功传递了从前一个视图控制器中选择的按钮的String title.text。

当删除if else语句时,代码可以正常工作,但我只能显示返回训练,所以如果允许的话还包括这个,以便显示肩部训练。

如果能得到这些警告,请你能看到我做错了吗

  • 第一次警告:变量' myCellChoice'从未发生变异;考虑改为“让”#39;恒定
  • 第二次警告:不可变值的初始化' myCellChoice'从未使用
  • 第三次警告:初始化不可变值&myCellChoice'从未使用

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        //First Warning Below
        var myCellChoice = DataService.instance.backWorkouts[indexPath.row]
    
        if myButtonChoiceString2 == "BACK" {
            //Second Warning Below
            let myCellChoice = DataService.instance.backWorkouts[indexPath.row]
        } else if myButtonChoiceString2 == "SHOULDERS" {
            //Third Warning Below
            let myCellChoice = DataService.instance.shoulderWorkouts[indexPath.row]
        }
    
        videoPlayer.loadVideoID(myCellChoice.videoCode)
    }
    

1 个答案:

答案 0 :(得分:0)

实际上是第一个var的警告,因为它应该被声明为而不是 var ,因为在你从未为它分配过值的方法上所以它是这样的常量不变量,关于其他2个警告都在 if ---- else 语句中声明,其中两个都没有被使用,实际上是行

 videoPlayer.loadVideoID(myCellChoice.videoCode)

读取最顶层声明的myCellChoice,这个

 var myCellChoice = DataService.instance.backWorkouts[indexPath.row]

不是在 if ----- else 语句中声明的那些,所以来自编译器逻辑的两者都无用

所有应该像这样重写

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

      if myButtonChoiceString2 == "BACK" {

            let myCellChoice = DataService.instance.backWorkouts[indexPath.row]

            videoPlayer.loadVideoID(myCellChoice.videoCode)

        } else if myButtonChoiceString2 == "SHOULDERS" {

            let myCellChoice = DataService.instance.shoulderWorkouts[indexPath.row]

            videoPlayer.loadVideoID(myCellChoice.videoCode)

      }
}