sss*_*ver 2 cocoa-touch ios swift
在以下代码中:
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?
Run Code Online (Sandbox Code Playgroud)
我们有错误抱怨UITableViewCell不能转换为MyTableViewCell.
所以编译器建议做一个强制转换:
let cell = tableView.dequeueReusableCell(
withIdentifier: "MyCell",
for: indexPath
) as! MyTableViewCell // ?!?!?!
Run Code Online (Sandbox Code Playgroud)
然而,这感觉很难看.
在处理时没有其他强制施法的选择tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)吗?这真的是在Swift中实现这一目标的最惯用的方式吗?
谢谢!
这真的是最惯用的方式吗?
绝对.这是完全标准的.
你可以像这样安全地垂头丧气:
if let cell = tableView.dequeueReusableCell(
withIdentifier: "MyCell",
for: indexPath
) as? MyTableViewCell {
Run Code Online (Sandbox Code Playgroud)
但这是我不认为值得做的一种情况,因为如果事实证明这不是一个MyTableViewCell,那么你想要崩溃是非常真实的.