func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath)
}
当我使用此代码时,会出现警告。
永远不会使用不可变值'cell'的初始化;考虑将作业替换为“_”或将其删除
我知道我从未使用过单元格,但我想问的问题是“赋值给'_'”,赋值给' - '是为了什么?我对Swift并不熟悉。
答案 0 :(得分:1)
警告意味着它的内容。你已经初始化了常量“单元格”,但没有对它做任何事情。因此,您将收到警告,直到您在其他地方使用它。这是Xcode如何跟踪变量的一部分。
编译器建议“_”的原因仅仅是因为您经常需要确保某些引用不是nil。在这些情况下,您可以通过代码确定某些内容是否为零
if let _ = someConstantThatMayBeNil {...}
然后你可以在括号内使用“someConstantThatMayBeNil”并确定它不是零。如果它是零,而你没有检查,你的程序就会崩溃。
我建议使用Apple的App Development With Swift来获得良好的使用基础。
答案 1 :(得分:0)
所以你想知道为什么Swift建议你用cell
替换_
?
在Swift中,您可以在赋值语句中执行pattern matching,例如:
let (x, y) = (1, 2)
(x, y)
部分是元组模式。它创建了两个变量x
和y
。 x
的值为1
,y
的值为2
。看看变量和值如何相互匹配?
_
也是一种模式,称为通配符模式。通过写_
,你基本上是在说“放弃价值”。所以:
let _ = tableView.cellForRow(at: indexPath)
表示不会创建任何变量,但仍会评估tableView.cellForRow(at: indexPath)
。该方法将被调用。
Swift建议你这样做,因为它看到cell
没有被使用,它认为你可能只想要cellForRow(at:)
的副作用。因此,它建议“为什么只为副作用创建一个新变量?无论如何你可能不需要返回值,用通配符模式替换它!”。