从“UITableViewCell”转换为不相关的类型“UIView”总是失败iOS9

时间:2015-10-06 09:11:19

标签: ios swift casting ios9

更新到iOS9后,我开始在以下代码中看到一个奇怪的警告:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
{
    var result: UIView?

    if UserPerspective.List == currentUser.perspective.value
    {
        result = tableView.dequeueReusableCellWithIdentifier("CustomHeader") as? UIView
    }

    return result
}

正如标题中所述,我得到以下警告:

  

从“UITableViewCell”转换为无关类型“UIView”始终失败

我无法理解它失败的原因,因为UITableViewCell是UIView的子类,然后转换应该没问题。但是,swift编译器不这么认为:)

2 个答案:

答案 0 :(得分:3)

你不应该施展它。

这应该足够了

let result = tableView.dequeueReusableCellWithIdentifier("CustomHeader")

结果为UITableViewCell?

如果你有自定义的UITableViewCell,我们可以将其称为customTableViewCell,你可以执行以下操作:

let result = tableView.dequeueReusableCellWithIdentifier("CustomHeader") as! customTableViewCell

答案 1 :(得分:1)

你不需要将UITableViewCell转换为UIView,因为它总是会成功,你得到上述错误,因为你正在为UIView投射一个可选项

result = tableView.dequeueReusableCellWithIdentifier("CustomHeader")! as? UIView

这样可行,但是没有用它。