在下面的代码中:
let cell = tableView.dequeueReusableCell(
withIdentifier: "MyCell",
for: indexPath
) as MyTableViewCell // 'UITableViewCell' is not convertible to 'MyTableViewCell'; did you mean to use 'as!' to force downcast?
我们有错误抱怨
UITableViewCell
不能转换为MyTableViewCell
。因此,编译器建议进行强制转换:
let cell = tableView.dequeueReusableCell(
withIdentifier: "MyCell",
for: indexPath
) as! MyTableViewCell // ?!?!?!
但是,这很难看。
在处理
tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
时,有没有其他选择可以强制转换?这真的是在Swift中最惯用的方式吗?谢谢!
最佳答案
这真的是最惯用的方式吗
绝对。这是完全标准的。
您可以像这样安全地向下转换:
if let cell = tableView.dequeueReusableCell(
withIdentifier: "MyCell",
for: indexPath
) as? MyTableViewCell {
但这是我认为不值得这样做的情况,因为如果事实证明这不是MyTableViewCell,那么您就有崩溃的感觉。