我的函数didSelectRowAt indexPath里面有一个if语句。
myButtonChoiceString2成功传递了从前一个视图控制器中选择的按钮的String title.text。
当删除if else语句时,代码可以正常工作,但我只能显示返回训练,所以如果允许的话还包括这个,以便显示肩部训练。
如果能得到这些警告,请你能看到我做错了吗
第三次警告:初始化不可变值&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)
}
答案 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)
}
}